• ベストアンサー

ボリゴン図形に外接するように幅つきポリゴンを書く

幅0で入力された多角形(ポリゴン)があって、 そのポリゴンに外接するように指定した幅で ポリゴンを書くプログラムを考えています。 Line幅を考慮した座標がうまく求めることが出来ません。 アドバイスを頂けないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

考え方としては 各頂点に対してオフセット量の半分の位置を再計算しないといけないでしょう 外接図形の頂点は 元の線分の外接量の半分の平行線と 内角の2等分線で出来る交点です 直角三角形が 線分終点(A) 平行線への終点からの垂線(B) 2等分線の交点(C)となります A-Bの長さがわかり 角BCAもわかるのですから # 線分の角度は 終点から始点の座標を引いた値を使って # 垂直(Y) / 水平(X) の値を アークタンジェントに与えてやれば求められます # ただし 垂直線は例外です # 垂直成分が+なら90度、 垂直成分が-なら270度(または-90度)としましょう 斜辺A-Cの長さを三角関数をつかって求めます これで求めた斜辺と 外接量から三平方の定理をつかって 残りの長さを求めます 外接量の半分をh、内角の半分をA、斜辺をL、求める長さXとするなら h/L = Sin(a) L = h / Sin(a) # VB などは Sinの引数が ラジアンなので # 度で計算されているのでしたら 度-ラジアンの変換が必要です # パイ(円周率)ラジアンが 180度です X^2 + h~2 = L^2 X^2= L^2 - h^2 X = √(L^2 -h^2) # BASICでは X = SQR( L*L - H*H ) となります あとは 元の線分の ベクトル(方向)にあわせて座標を算出しましょう

men_tan
質問者

お礼

少し時間はかかりましたが、教えていただいた公式を プログラムに組み込み結果を出せました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう