Ich möchte ein rechtwinkliges Dreieck aus zwei gegebenen Punkten A
und B
konstruieren. In diesem speziellen Fall wird die Linie c
, die von diesen Punkten erzeugt wird, für jeden x
in y
Richtung aufsteigend. (rosa Farben)Erstellen eines lotrechten Dreiecks aus 2 angegebenen Punkten
An der Stelle B
möchte ich das Bein a
mit einer festen Länge in einem 90 ° Winkel mit einer Abwärtsrichtung konstruieren. (Farbe grün).
Aus dem obigen folgt der Punkt C
und Segment b
(lila).
ich habe folgende Matlab-Code geschrieben C
Calc und das Ergebnis angezeigt werden soll.
A = [ 1 1 ];
B = [ 5 4 ];
a = 2; % fixed len
c = sqrt((B(1)-A(1))^2 + (B(2)-A(2))^2);
b = sqrt(c^2 + a^2);
alpha = atan(a/c);
gamma = atan(c/a);
C = A + 1/tan(gamma)*[-1 * (B(2)-A(2)) (B(1)-A(1))];
ALL = [A;B;C]
x = ALL(:,1);
y = ALL(:,2);
%plot
xlim([-2 8]);
ylim([-2 8]);
patch(x,y, 'green');
% debug output
acheck = sqrt((A(1)-C(1))^2 + (A(2)-C(2))^2) % this should be B-C but somehow it isnt
alpha_deg = rad2deg(alpha);
gamma_deg = rad2deg(gamma);
Und das ist das Ergebnis der Plotting.
Wie Sie das Bein sehen a
am Punkt wurde A
und nicht an der Stelle gebaut B
und das Bein zeigt in die entgegengesetzte Richtung, dass ich es will.
Ich wäre dankbar, wenn jemand die Fehler meines Weges erklären könnte.
Dank
Ich schlage vor, Sie erklären Ihre Begründung hinter der Linie 'C = A + 1/tan (Gamma) * [- 1 * (B (2) -A (2)) (B (1) -A (1)) ]; ' – Dan
ich kopierte das von einer anderen SO-Antwort auf, wie man einen fehlenden Punkt C – robkuz
berechnet, dann müssen Sie Ihre Frage redigieren, um zu dieser Antwort zu verweisen – Dan