Zitat:
Nun muss ich aber (um das Dreieck zeichnen zu können) noch die Koordinaten des Punktes C in die Paintbox übertragen. Die Koordinaten wollte ich zuerst durch die höhe auf der Seite c berechnen, aber kein chance.
Der Ansatz mit der Höhe (hc) auf die Seite c ist nicht schlecht. Um diese Berechnen zu können benötigst du einen Punkt X, der das Lot vom Punkt C auf die Seite c darstellt. Der Abstand zwischen Punkt A und Punkt X sei c1. c2 ist der Abstand zwischen dem Punkt B und Punkt X. Mit diesen Werten lässt sich jetzt die Höhe hc berechnen.
hc^2=a^2-c1^2
hc^2=b^2-c2^2
c=c1+c2
a^2-c1^2=b^2-c2^2
a^2-c1^2=b^2-(c-c1^2)
nach Umstellung dieser Formel erhält mann:
c1=(a^2-b^2+c^2)/(2*c)
damit lässt sich jetzt die Höhe auf Seite c berechnen
Delphi-Quellcode:
procedure TForm1.DreieckZeichnen(SeiteA, SeiteB, SeiteC: Integer);
var
A : TPoint;
B : TPoint;
C : TPoint;
c1 : Double;
hc : Double;
begin
c1:= (sqr(SeiteB)-sqr(SeiteA)+sqr(SeiteC))/(2*SeiteC);
hc:= Sqrt(sqr(SeiteB)-sqr(c1));
A.X:= 20;
A.Y:= PaintBox1.Height-20;
B.X:= A.X+SeiteC;
B.Y:= A.Y;
C.X:= A.X+Trunc(c1);
C.Y:= A.Y-Trunc(hc);
with PaintBox1 do begin
Canvas.FillRect(Rect(0, 0, Width, Height));
Canvas.MoveTo(A.X, A.Y);
Canvas.LineTo(B.X, B.Y);
Canvas.LineTo(C.X, C.Y);
Canvas.LineTo(A.X, A.Y);
end;
end;