Advertisement
Guest User

Untitled

a guest
Aug 1st, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. void rotat(double x, double y, double &x1, double &y1, double ang){
  2.     double vx = x1 - x;
  3.     double vy = y1 - y;
  4.     double nx = vx * cos(ang) - vy * sin(ang);
  5.     double ny = vx * sin(ang) + vy * cos(ang);
  6.     x1 = x + nx;
  7.     y1 = y + ny;
  8. }
  9. pair<double, double> f(double x1, double y1, double a, double x2, double y2, double b, double ang){
  10.     double c = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
  11.     rotat(x2, y2, x1, y1, ang);
  12.     double vx = x1 - x2;
  13.     double vy = y1 - y2;
  14.     double nx = vx * b / c;
  15.     double ny = vy * b / c;
  16.     x1 = x2 + nx;
  17.     y1 = y2 + ny;
  18.     return {x1, y1};
  19. }
  20. pair<double, double> getCircle(double x1, double y1, double r1, double x2, double y2, double r2, double r, bool alternative = false){
  21.     double a = r1 + r;
  22.     double b = r2 + r;
  23.     double c = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
  24.     double ang = acos((b * b + c * c - a * a) / (2 * b * c));
  25.     if(alternative) return f(x1, y1, a, x2, y2, b, ang);
  26.     else return f(x1, y1, a, x2, y2, b, -ang);
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement