サイトアイコン CAD日記

円弧をポリラインに変換

以前書いた記事「ポリラインのふくらみ」を実践する日がやってきた。
複数のつながった円弧を1つのポリラインに変換する。
AutoCADのポリラインは、点列を線分でつなぐだけのものではない。
途中にふくらみ、つまり円弧を入れることができる。
円弧を表現するために、ふくらみ(bulge)という1つの実数情報が必要になる。
普通に円弧を表現する場合、中心点と半径と開始角度と終了角度と回り方という
情報が必要だが、ポリライン内では開始点と終了点とふくらみだけで済む。
ポリラインには点列(つまり開始点と終了点)が存在しているので、
そこにふくらみという情報を追加するだけで、あらゆる円弧が表現できてしまう。
おさらいは、ここまでにしておく。
さて、AutoCADの円弧である。
保持している情報は、中心点と半径と開始角と終了角。
回り方、つまり反時計回りなのか時計回りなのかという情報がない。
常に、反時計回りとして識別される。
(数学的には、3時方向を0度として反時計回りに角度を測るのが普通。)
ただ単純に円弧を画面に表示するのであれば、回り方なんていう情報は必要ない。
でも、ポリラインのようにつながっているという状態を表現するには、
絶対的に必要なものである。(ハッチングにおける、境界図形の円弧も同様。)
「複数のつながった円弧」とは、画面ではつながっているように見えても、
内部情報としてはつながっていないのである。
となりあう円弧同士で接続状態を確認しながら、
個々の円弧が反時計回りなのか時計回りなのかを判定する。
文章にすると簡単だが、プログラムでは約100ステップを要した。
これにより、連続した円弧の回り方が判明する。
さらに、円弧の開始点と終了点を計算しておく。
(中心点と半径と開始角、終了角から容易に計算できる。)
以下の公式からふくらみを計算する。
ふくらみ = tan( 円弧の中心角 /4 )
反時計回りなら何も変更する必要はない。
時計回りなら、ふくらみをマイナス値として
開始点と終了点を入れ替える。
あとは空のポリラインに、頂点情報(Vertex)追加すればよい。
1個の円弧につき、開始点とふくらみをセットで頂点情報とする。
最後の頂点だけは、1つ前の終了点とふくらみに0をセットする。
これでポリラインが完成だ。
「複数のつながった円弧を1つのポリラインに変換する。」
なかなか興味深いテーマだった。
今後、いろいろと応用が利きそうだ。

モバイルバージョンを終了