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.