Einzelnen Beitrag anzeigen

dummzeuch
(Gast)

n/a Beiträge
 
#6

Re: Rechtwinkeliges Dreieck zeichnen

  Alt 12. Mär 2006, 15:25
Hm,

A = (ax, ay)
B = (bx, by)
M = A + (B - A) / 2 (Mittelpunkt der Hypothenuse)

M = (ax, ay) + ((bx-ax)/2, (by-ay)/2)

Wenn ich mch jetzt noch erinnern koennte, wie man einen Vektor um 90 Grad dreht....

Ach ja: Koordinaten vertauschen und eine davon negativ nehmen:

Vektor von A nach B: ((bx-ax),(by-ay))
Vektor senkrecht dazu:
1. (-(by-ay),(bx-ax)) = (ay-by,bx-ax)
2. ((by-ay),-(bx-ax)) = (by-ay,ax-bx)

Daraus ergibt sich dann:

1. C = (ax, ay) + ((bx-ax)/2, (by-ay)/2) + ((ay-by)/2,(bx-ax)/2)
2. C = (ax, ay) + ((bx-ax)/2, (by-ay)/2) + ((by-ay)/2,(ax-bx)/2)

Mann, mein Mathe ist schon verdammt lange her. OK, als Delphi Prozedur:

Delphi-Quellcode:
procedure GleichschenkligRechtwinkligesDreieck(A, B: TPoint; out C1, C2: TPoint);
var
  AB2: TPoint; // Vektor AB / 2
  H1, H2: TPoint; // Hoehe 1 und 2
begin
  AB2 := Point(Round((B.x - A.x) / 2), Round((B.y - A.y) / 2));
  H1 := Point(Round((A.y - B.y) / 2), Round((B.x - A.x) / 2));
  H2 := Point(Round((B.y - A.y) / 2), Round((A.x - B.x) / 2));
  C1 := Point(A.x + AB2.x + H1.x, A.y + AB2.y + H1.y);
  C2 := Point(A.x + AB2.x + H2.x, A.y + AB2.y + H2.y);
end;
Das muesste es tun, aber ich habe es nicht ausprobiert.
  Mit Zitat antworten Zitat