ポリラインに円弧を含める場合、内部的にはふくらみという情報を持つ。
(DXFのグループコードでいうと42)
ポリラインの基本は、XとYの座標情報。
線分だけで構成されるポリラインなら、頂点数分のXY座標が存在する。
もし途中で円弧があらわれたら?
ふくらみの出番となる。(英語でいうと、bulge)
ふくらみをB、円弧の中心角をAとすると、
B = tan( A /4 )
A = 4 × arctan( B )
この数式の説明は省くが、ふくらみという情報はかなりかしこい。
-360 < A < 360 が全て表現できる。
普通に円弧を表現する場合、
中心点、半径、開始角、終了角、
それから、角度の回り方(時計周りか反時計回りか)を持つ。
ふくらみと開始点終了点から、これら全ての情報が逆算できる。
(この計算が、ちょいとめんどくさいが)
一方、円弧型のポリラインは、
開始点、終了点、ふくらみ、だけでよい。
(ふくらみが正の値なら反時計回り、負の値なら時計回り)
しかも、開始点と終了点は直線型のポリラインが既に持っている情報なので、
そこにふくらみという情報を追加するだけで、円弧の形状が確定することになる。
線と円弧、または円弧と円弧が常に接続していると考えたときには、
一番効率のよいデータの持ち方になるだろう。
(内部的な計算は少々ややこしくなるが)
連続線の途中に円弧を含めるというのは、とてもAutoCAD的なもので
なかなか受け入れられなかったが、ふくらみというデータ表現を理解できると
すんなりと受け入れられるかもしれない。
これまた奥が深い世界だ。