Einzelnen Beitrag anzeigen

Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#1

Winkel zwischen zwei Punkten?!

  Alt 28. Aug 2009, 11:56
Hallo, nach viel googlen finde ich einfach nicht, wonach ich suche. Selbst kann ich es nicht beantworten, da ich Winkelfunktionen(sin, cos, tan, etc.) in der Schule noch nicht gelernt habe.

Ich habe einen TPoint, nennen wir ihn P1.
Dann klicke ich mit der Maus:
Delphi-Quellcode:
begin
...
  GetCursorPos(p2);
  p2 := ScreenToClient(p2);
  SetDir(round(Tan((P1.Y - P2.Y) / (P1.X - P2.X))));
...
end;
SetDir ist folgendes:
Delphi-Quellcode:
procedure TEinheit.SetDir(ADirection: Integer);
var
  w:integer;
begin
  //Reset the speed variables
  FYSpeed := 0;
  FXSpeed := 0;


  w := ADirection;

  //Set the X and the Y speed
  FXSpeed := round(cos(PI/180*w)*Speed);

  FYSpeed := round(sin(PI/180*w)*Speed);

  AnimLoop := true;
  AnimActive := true;
end;
Vielleicht inzwischen erraten, es ist ein Andorra 2D Projekt
die DoMove procedure von TEinheit ist folgende:
Delphi-Quellcode:
procedure TEinheit.DoMove(TimeGap: Double);
begin
inherited DoMove(TimeGap);
    X := X + FXSpeed * TimeGap;
    Y := Y + FYSpeed * TimeGap;
end;

Tja, egal wohin ich klicke, er läuft immer nach rechts(die Animation soll ja nach rechts laufen, aber der Sprite soll dahin laufen, wohin ich klicke...)

Info: Da ich mich ja mit Winkelfunktionen nicht auskenne, habe ich mir die Sinus Cosinus und ArcTangens dinger aus Demos rausgeschnappt....
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat