Einzelnen Beitrag anzeigen

olaf43

Registriert seit: 2. Dez 2010
9 Beiträge
 
#15

AW: Richtungs bzw. Vektorpfeil zeichnen

  Alt 29. Jan 2018, 08:39
Es geht auch ohne sinus, cosinus,..:
Procedure DrawArrow(
canvas:tCanvas; // canvas, auf dem gezeichnet werden soll
x1,y1, // Koordinaten des Startpunktes
x2,y2:integer; // Koordinaten des Endpunktes
w:integer=5; // Breite (+- der Pfeilspitze
l1:integer=20; // Länge der Pfeilspitze
L2:integer=15 // Länge der Pfeilspitze in der Mitte
);
var Len, lens,LenC:double;
dx,dy:double;
xs,ys,xc,yc:integer;
poly:array[0..4] of tPoint;

procedure setpoint(i:integer;x,y:integer);
begin
poly[i].X:=x;
poly[i].Y:=y;
end;

begin
Canvas.MoveTo(x1,y1);
canvas.LineTo(x2,y2);
len:=sqrt(sqr(x2-x1)+ sqr(y2-y1));
Lens:=len-L1;
Lenc:=len-L2;
dx:=(x2-x1)/Len;
dy:=(y2-y1)/len;
xs:=x1+round(dx*lens);
ys:=y1+round(dy*lens);
xc:=x1+round(dx*lenc);
yc:=y1+round(dy*lenc);
Setpoint(0,x2,y2);
Setpoint(1,round(xs-dy*w), round(ys+dx*w));
Setpoint(2,xc,yc);
Setpoint(3,round(xs+dy*w), round(ys-dx*w));
Setpoint(4,x2,y2);
canvas.Polygon(poly);
end;
Angehängte Dateien
Dateityp: pas DrawArrow.pas (1.006 Bytes, 6x aufgerufen)
Wichard
  Mit Zitat antworten Zitat