こんにちは、私は狂ったような幾何学的問題を抱えています。私は、「二等辺三角形」(α= 45°、β= 45°、γ= 90°)で1つの頂点の位置を決定したいと考えています。"二等辺三角形の三角形"の頂点を決定する
私はa、b、c、hとAとBの位置(そして角度の原因)を持っています。欠落しているのは、x、y項のCだけです。誰かが私にこれをサポートできますか?
こんにちは、私は狂ったような幾何学的問題を抱えています。私は、「二等辺三角形」(α= 45°、β= 45°、γ= 90°)で1つの頂点の位置を決定したいと考えています。"二等辺三角形の三角形"の頂点を決定する
私はa、b、c、hとAとBの位置(そして角度の原因)を持っています。欠落しているのは、x、y項のCだけです。誰かが私にこれをサポートできますか?
ここでは、45°-45°-90°の三角形に対してのみ機能するコードです。他の三角形に対しては変更する必要があります。
A
とB
の座標だけが必要です。 c
は、これら2つの点の間の距離であり、h
はc/2
であり、a
とb
はともにc/sqrt(2)
です。このPythonコードはC
をベクトルAB
から反時計回りにすることを想定して、C
の座標を与える2タプル(Cx, Cy)
を返します。時計回りにしたい場合は、プラス記号をinclinationAC
を定義する計算のマイナス記号に置き換えます。これは基本的な三角法だけを使用し、各段階を示しています.Ed Heal氏のコメントのように他の方法がありますが、これはほとんどの人が理解しやすいはずです。
from math import sqrt, hypot, pi, cos, sin, atan2
def corner_right_isoceles(Ax, Ay, Bx, By):
"""Return the coordinates of the right-angle corner of a right
isosceles triangle if the other two vertices are the points
(Ax, Ay) and (Bx, By). The returned corner is counterclockwise
from the vector AB.
"""
c = hypot(By - Ay, Bx - Ax)
b = c/sqrt(2)
inclinationAB = atan2(By - Ay, Bx - Ax)
inclinationAC = inclinationAB + pi/4
Cx = Ax + b * cos(inclinationAC)
Cy = Ay + b * sin(inclinationAC)
return Cx, Cy
絶対に鮮やかです。それはまさに私が探していたものです。 – user1234
これは、もう少し簡単で、計算効率がはるかに優れた別のバージョンです。
dx = Bx - Ax
dy = By - Ay
Cx = Ax + 0.5 * (dx - dy)
Cy = Ay + 0.5 * (dy + dx)
私が行列についてアップ読み、そこ回転で使用します。アイデアは
h
は、この三角形でc
のちょうど半分であるということです。すなわち、最初に三角形を回転させて湖の生活を楽にします。算術演算には 'sine/cosine'などを使います。回転を逆転させる。代数と数式はそれから出てくるはずです –プログラミングやソフトウェア開発ではなく、[math.se]についての話題なので、この質問を議論の対象外とすることにしました。 – Pang
移動が素晴らしいでしょうか?しかし問題は、その質問に書かれていなくても、プログラミングの背景であった。その答えは、これを飛ばして、Pythonのアプローチを提案しました。 – user1234