Mega Code Archive

 
Categories / Delphi / Examples
 

Relative angle

How to determine the angle needed to travel from X1,Y1 to X2, Y2. Relative angles Drawing a line from 100, 100 to 200, 200 would mean that you are drawling your line at 135 degrees. This function determines that angle. function RelativeAngle(X1,Y1, X2,Y2 : Integer) : Integer; var Theta : Extended; XDist, YDist : Integer; begin Result := 0; //arctan((y2-y1)/(x2-x1)) XDist := X2 - X1; YDist := Y1 - Y2; if (XDist = 0) and (YDist=0) then exit; if YDist=0 then Theta := arctan((X2-X1)) else Theta := arctan((X2-X1)/(Y1-Y2)); Result := Round(RadToDeg(Theta)); if (X2 >= X1) and (Y2 >= Y1) then //Quadrant = 2 Result := 90+(90-Abs(Result)) else if (X2 <= X1) and (Y2 >= Y1) then //Quadrant = 3 Result := 180 + Result else if (X2 <= X1) and (Y2 <= Y1) then //Quadrant = 4 Result := 270+90-Abs(Result); end;