SCAR Code:
Result := Point(point1.x + xp * Round(Cos(rs_GetCompassAngleRadians)) + yp * Round(Sin(rs_GetCompassAngleRadians)), point1.y - xp * Round(Sin(rs_GetCompassAngleRadians)) + yp * Round(Cos(rs_GetCompassAngleRadians)));
There's already a RotatePoint() and currently you're calling rs_GetCompassAngleRadians 4 times per function call! you should do it like this
SCAR Code:
var
a, cosa, sina: extended;
begin
a := rs_GetCompassAngleRadians;
cosa := Cos(a);
sina := Sin(a);
Result := Point(point1.x + xp * Round(cosa) + yp * Round(sina), point1.y - xp * Round(sina) + yp * Round(cosa));
But the code looks awesome
Good job, I really hope someone finishes this!