sandbox/alimare/basic_geom.h

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    double rectangle(double x, double y, coord center, coord size) {
    
      double P1_Plus = x - size.x/2.  - center.x;
      double P1_Minus = x + size.x/2. - center.x;
      double P1 = max (P1_Plus, -P1_Minus);
    
      double P2_Plus = y - size.y/2.  - center.y;
      double P2_Minus = y + size.y/2. - center.y;
      double P2 = max (P2_Plus, -P2_Minus);
    
      double c = max ( P1,P2 );
      return c;
    }
    
    double circle(double x, double y,  coord center, double radius) {
      double R2  =  sq(x - center.x) + sq (y - center.y);
      return ( sqrt(R2) - radius);
    }
    
    double ellipse(double x, double y,  coord center, double radius,
                   double a, double b) {
      double R2  =  sq((x - center.x)/a) + sq ((y - center.y)/b);
      return ( sqrt(R2) - radius);
    }
    
    double sphere(double x, double y,  double z, coord center, double radius) {
      double R2  =  sq(x - center.x) + sq (y - center.y) + sq (z - center.z);
      return ( sqrt(R2) - radius);
    }
    
    
    // TODO: cylinder