Suggest a feature
×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: C++
Posted by: Ivan Belonogov
Added: Jan 28, 2018 3:46 PM
Modified: Mar 1, 2018 2:12 PM
Views: 13
Tags: no tags
  1. bool eq(dbl A, dbl B) {
  2.     return abs(A - B) < 1e-9;
  3. }
  4.  
  5. bool ls(dbl A, dbl B) {
  6.     return A < B && !eq(A, B);
  7. }
  8.  
  9. bool le(dbl A, dbl B) {
  10.     return A < B || eq(A, B);
  11. }
  12.  
  13. struct pt {
  14.     dbl x, y;
  15.     pt(){}
  16.     pt(dbl xx, dbl yy): x(xx), y(yy) {}
  17.     pt operator + (pt A) {
  18.         return pt(x + A.x, y + A.y);
  19.     }
  20.     pt operator - (pt A) {
  21.         return pt(x - A.x, y - A.y);
  22.     }
  23.     pt operator * (dbl k) {
  24.         return pt(x * k, y * k);
  25.     }
  26.     pt operator / (dbl k) {
  27.         assert(abs(k) > 1e-20);
  28.         return pt(x / k, y / k);
  29.     }
  30.     dbl operator * (pt A) {
  31.         return x * A.y - y * A.x;
  32.     }
  33.     dbl operator % (pt A) {
  34.         return x * A.x + y * A.y;
  35.     }
  36.     bool operator == (pt A) {
  37.         return eq(x, A.x) && eq(y, A.y);
  38.     }
  39.     bool operator != (pt A) {
  40.         return !eq(x, A.x) || !eq(y, A.y);
  41.     }
  42.     dbl len() {
  43.         return sqrt(x * x + y * y);
  44.     }
  45.     dbl len2() {
  46.         return x * x + y * y;
  47.     }
  48.     pt rotate () {
  49.         return pt(-y, x);
  50.     }
  51.     pt norm() {
  52.         return (*this) / len();
  53.     }
  54.     void read() {
  55.         scanf("%lf%lf", &x, &y);
  56.     }
  57.     void Epr() {
  58.         cerr << "x y: " << x << " " << y << endl;
  59.     }
  60. };
  61.