高校では、三角形を解く際に余弦定理を学びました. 彼の基本的な式は次のとおりです。
得られた ∠C はラジアン単位の角度です
単純に角度 (ラジアンではなく、度) を取得したい場合は、次のコードを参照してください。
Dim la = CInt(T1.Text)
Dim lb = CInt(T2.Text)
Dim lc = CInt(T3.Text)
Dim a = Math.Acos((lb * lb + lc * lc - la * la) / (2 * lb * lc)) * (180 / Math.PI)
Dim b = Math.Acos((la * la + lc * lc - lb * lb) / (2 * la * lc)) * (180 / Math.PI)
Dim c = Math.Acos((la * la + lb * lb - lc * lc) / (2 * la * lb)) * (180 / Math.PI)
そうでない場合は、以下をお読みください
したがって、次のコードがあります: (逆余弦を使用して、余弦値(ラジアン単位) に対応する角度を見つけます)
Dim la = CInt(T1.Text)
Dim lb = CInt(T2.Text)
Dim lc = CInt(T3.Text)
Dim a = Math.Acos((lb * lb + lc * lc - la * la) / (2 * lb * lc))
Dim b = Math.Acos((la * la + lc * lc - lb * lb) / (2 * la * lc))
Dim c = Math.Acos((la * la + lb * lb - lc * lc) / (2 * la * lb))
次に、辺の長さと角度の配列を作成します
Dim l As Integer() = {la, lb, lc}
Dim ang As Double() = {a, b, c}
最後に、2 つの描画方法を示します。
Dim picw = l(2)
Dim pich = Math.Cos(Math.PI / 2 - ang(1)) * l(0)
Dim point2 = New Point(Math.Sin(Math.PI / 2 - ang(1)) * l(0), pich)
Dim bmp1 = New Bitmap(picw, CInt(pich))
Dim g = Graphics.FromImage(bmp1)
g.DrawPolygon(New Pen(Color.Red), {New Point(0, 0), New Point(picw, 0), point2})
Pic1.Image = bmp1
pich = Math.Cos(Math.PI / 2 - ang(0)) * l(1)
point2 = New Point(Math.Sin(Math.PI / 2 - ang(0)) * l(1), pich)
Dim bmp2 = New Bitmap(picw, CInt(pich))
Dim g2 = Graphics.FromImage(bmp2)
g2.DrawPolygon(New Pen(Color.Red), {New Point(0, 0), New Point(picw, 0), point2})
Pic2.Image = bmp2
効果: