C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

曲線と戦ってみる6

こちらの続きです。
曲線と戦ってみる5 - C#ATIA


最適な数の点を求める方法がわからないのですが、
曲線とチャレンジする円弧のお互いの長さを考えて
見ることにします。

チャレンジする円弧に対し、この区間の曲線の状態は
想像するに3タイプが考えられます。

f:id:kandennti:20160622141221p:plain
まず、3点通過の円弧に対し、3点の折れ線を考えて見ます。
この折れ線は、3点を通過するもっとも短い長さでありこれ以上
短い曲線は考えられません。このパターンはその為無視します。
(もちろん途切れていない状態でです)

・円弧より短いタイプ

f:id:kandennti:20160622141302p:plain
数は少ないとは思うのですが、円弧より若干内側を通っている
ような曲線です。 この形であれば、ある程度適切な点の数を
予測できそうな気がしています。

・円弧より長いタイプ

f:id:kandennti:20160622141308p:plain
大半はこのタイプに出くわすと思っていますが、実際には
色々な形となり、予測不能な形になっているはずです。

・円弧とほぼ同じ長さのタイプ

f:id:kandennti:20160622141316p:plain
実はこのタイプが僕の理解で合っているいるのか自信が無いです。
上記の様にP1-P2が若干円弧より内側(要は円弧より短い)に入り、
P2-P3が若干円弧より外側(内側で円弧より長い場合も含め)
のような形が可能性があるのかな? と最初は思いました。

現在のマクロの処理では、そのようになっていないのですが、
P2が必ずP1とP3の中間の長さになっている事が条件であれば、
上の画像の状態にはならず、円弧の通過点はこちらの様に
なっている必要があります。
f:id:kandennti:20160622141322p:plain

そうなると、もう長さのチェックだけでも円弧が確定できるかな?
とも思ったのですが、こんな感じの場合も有り得ます。
f:id:kandennti:20160622141328p:plain

それでも2点ぐらいのチェックでも十分確定出来そうな気配です。