Guest User

Новые координаты вершин прямоугольника после поворота.

a guest
Nov 12th, 2012
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.69 KB | None | 0 0
  1. Function  TMyStrategy.GetCoordinateTangleObject(Obj:TUnit):CoorTangleObject;
  2. VAR IncCoorObj,NewCoorObj:CoorTangleObject; //координаты приращения, новые координаты
  3. VAR cosAngle, sinAngle, ObjAngle:double; //косинус синус и угол
  4. VAR tESTvAR:double;
  5. VAR ObjX, ObjY:Double;   //координаты центра
  6.  Begin
  7.  ObjAngle:=Obj.GetAngle;
  8.  ObjX:=Obj.GetX;
  9.  ObjY:=Obj.GetY;
  10.  
  11.  cosangle:= cos(ObjAngle);
  12.  sinAngle:= sin(ObjAngle);
  13.  
  14.  //получение приращения координат
  15.  IncCoorObj[1][1] := +Obj.GetWidth/2;     //A
  16.  IncCoorObj[1][2] := -Obj.GetHeight/2;
  17.  
  18.  IncCoorObj[2][1] := -Obj.GetWidth/2;     //B
  19.  IncCoorObj[2][2] := -Obj.GetHeight/2;
  20.  
  21.  IncCoorObj[3][1] := -Obj.GetWidth/2;     //C
  22.  IncCoorObj[3][2] := +Obj.GetHeight/2;
  23.  
  24.  IncCoorObj[4][1] := +Obj.GetWidth/2;     //D
  25.  IncCoorObj[4][2] := +Obj.GetHeight/2;
  26.  
  27.  //получение новых координат с учетом угла
  28.  NewCoorObj[1][1] := ObjX + IncCoorObj[1][1] * cosAngle - IncCoorObj[1][2] * sinAngle;
  29.  NewCoorObj[1][2] := ObjY + IncCoorObj[1][1] * sinAngle + IncCoorObj[1][2] * cosAngle;
  30.  
  31.  NewCoorObj[2][1] := ObjX + IncCoorObj[2][1] * cosAngle - IncCoorObj[2][2] * sinAngle;
  32.  NewCoorObj[2][2] := ObjY + IncCoorObj[2][1] * sinAngle + IncCoorObj[2][2] * cosAngle;
  33.  
  34.  NewCoorObj[3][1] := ObjX + IncCoorObj[3][1] * cosAngle - IncCoorObj[3][2] * sinAngle;
  35.  NewCoorObj[3][2] := ObjY + IncCoorObj[3][1] * sinAngle + IncCoorObj[3][2] * cosAngle;
  36.  
  37.  NewCoorObj[4][1] := ObjX + IncCoorObj[4][1] * cosAngle - IncCoorObj[4][2] * sinAngle;
  38.  NewCoorObj[4][2] := ObjY + IncCoorObj[4][1] * sinAngle + IncCoorObj[4][2] * cosAngle;
  39.  
  40.  Result:= NewCoorObj;
  41.  
  42.  end;
Advertisement
Add Comment
Please, Sign In to add comment