Einzelnen Beitrag anzeigen

Delphianer111

Registriert seit: 23. Nov 2007
9 Beiträge
 
Delphi XE5 Professional
 
#17

Re: Dreiecksberechnungen und zeichnen

  Alt 23. Nov 2007, 10:23
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;
  Mit Zitat antworten Zitat