Einzelnen Beitrag anzeigen

Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#17

Re: Dreieck um Punkt auf der Hypotenuse drehen

  Alt 17. Mär 2010, 13: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."
  Mit Zitat antworten Zitat