Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Koordinaten zwischen zwei Punkten

  Alt 13. Feb 2010, 19:00
Zitat von Delphi-Narr:
Hm, und wie soll ich die dann aufrufen? Ich möchte ja keinen Prozentwert angeben, sondern einen absoluten Wert...
Und TPointF kann man ja nicht im LineTo einbauen.

Hier mal mein Lösungsansatz:

Delphi-Quellcode:
function TForm1.PointOnLine(X1,Y1,X2,Y2,Abstand:integer):TPoint;
var V:real; //Verhältnis zwischen AB und AD
    AB,BD,AD,AE,CE,x,y:integer;
begin

AD:=X1-X2;
BD:=Y1-Y2;
AB:=(Round(sqrt(sqr(AD)+sqr(BD))));
if AD<>0 then V:=AB/AD else V:=1;
CE:=Round(BD/V);
AE:=Round(Sqrt(sqr(Abstand)-sqr(CE)));
x:=Round(X1+AE);
y:=Round(Y1+CE);

Result:=Point(X,Y);
end;
Ich lad mal ein Bild hoch, was die Punkte benennt
1. Dann modifiziere meinen Code so, dass >vSE< normalisiert wird (dh Länge=1 hat) und anschließend multiplizierst du es anstatt mit dx mit dem Wert, den du haben willst.
2. Per Round() kannst du Float-Werte nach Integer umwandeln

edit:
Delphi-Quellcode:
function TForm1.PointOnLine(const X1,Y1,X2,Y2,Abstand: Integer): TPoint;
ver
  dX, dY,
  dL: Single;
begin
  dX := X2-X1;
  dY := Y2-Y1;
  dL := SQRT( dX*dX + dY*dY );
  if dL = 0 then
    dL := 1;
  dX := dX / dL;
  dY := dY / dL;
  Result := Point( Round( dX*Abstand ), Round( dY*Abstand ) );
end;
MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat