Ejemplo n.º 1
0
    double angle(point p) {
#ifdef DBGANGLE
        printf("(%d, %d).(%d, %d) = ", x, y, p.x, p.y);
        double dotmod = (*this ^ p) / mod() / p.mod();
        printf(" %.3lf --> %.3lf\n", dotmod, acos(dotmod));
#endif
        return acos((*this ^ p) / mod() / p.mod());
    }
Ejemplo n.º 2
0
point reflect(point P,point direct,point A,point B,double mu)
{
   double dot(point,point);
   point rotate(point,double);
   if (P==A || P==B)
      return(direct);
   if (dot(direct,A-B)<0)
      swap(A,B);
   point T=A-B;
   double angle=pi/2-acos(dot(direct,T)/direct.mod()/T.mod());
   double theta=asin(sin(angle)/mu);
   if (direct*T>0)
      return(rotate(direct,theta-angle));
   else
      return(rotate(direct,angle-theta));
}