.net/vb.net は、3 辺 (コサインの法則の適用) に従って三角形を描画します。

高校では、三角形を解く際に余弦定理を学びました. 彼の基本的な式は次のとおりです。

 

得られた ∠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

効果:

 

 

おすすめ

転載: blog.csdn.net/weixin_56050945/article/details/129468286