Registriert seit: 18. Feb 2005
286 Beiträge
Delphi 2010 Enterprise
|
Re: Dreieck um Punkt auf der Hypotenuse drehen
17. Mär 2010, 14:41
Das hier müsste gehen, ist aber freihand getippt.
Delphi-Quellcode:
type
TVector2D = record
X, Y: Extended;
end;
{ TVector2D }
function Vector2DAdd(const Left,
Right: TVector2D): TVector2D;
begin
Result.X := Left.X + Right.X;
Result.Y := Left.Y + Right.Y;
end;
function Vector2DToPoint(const Value: TVector2D): TPoint;
begin
Result.X := Round(Value.X);
Result.Y := Round(Value.Y);
end;
function Vector2DNew(const X, Y: Extended): TVector2D;
begin
Result.X := X;
Result.Y := Y;
end;
procedure Vector2DRotate(var Vector: TVector2D; const Alpha: Extended);
var
S, C, T: Extended;
begin
C := Cos(Alpha);
S := Sin(Alpha);
T := X;
Vector.X := C * Vector.X - S * Vector.Y;
Vector.Y := S * T + C * Vector.Y;
end;
function Vector2DRotated(const Vector: TVector2D; const Alpha: Extended): TVector2D;
begin
Result.X := Vector.X;
Result.Y := Vector.Y;
Vector2DRotate(Result, Alpha);
end;
{ TForm1 }
begin
X := Vector2DNew(-80, 0);
// ...
U := Vector2DToPoint(Vector2DAdd(O, Vector2DRotated(X, Alpha)));
// ...
end;
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
|