"続きやらない" って書いておきながら、こちらの続きを考えてます・・・。
ポリゴンなスケッチラインを円に書き換えるスクリプト - C#ATIA
ポリゴンの各始点から3点選び出して、3点通過円で処理して
いるのですが、エラーの可能性も排除出来ていない(例外処理すら
してない)のが心残りですし、ちょっとカッコ悪いので、
最小二乗法で円フィッティングを採用したい気持ちが山々。
小難しい数式を理解してコードにする能力を持ち合わせていない為、
pythonコードそのものを使わせてもらいたいです。
探した所、こちらがすんなりしていたので、参考にさせてもらいます。
最小二乗法による点群の円フィッティングMATLAB&Pythonサンプルプログラム - MyEnigma
当然、pythonの方です。(お世話になります)
"そのまま使えばいいじゃん" と思うのですが、これ程度でnumpyを
用意させるのが嫌なので、若干速度が落ちででも非numpyで
作りたいところです。(素直じゃない・・・)
”np.array” は標準のListでも構わないのでスルーしますが、この1行のみ
理解できません。
調べると "inv” は逆行列で ”dot" は内積・・・まぁ確かに
名称からしてそうでしょうね。
コード読んでいる限り、行列に対して内積って計算できるのかな?
と言う疑問にぶつかりまくる。
適当な数値をパラメータに投げ込んだところ、こんな感じ。
"F" と "G" を見ると、Fは3X3で Gは3X1 ・・・コード見ても
そうなると思ったよ。
Fusion360APIには便利なものがあって、Matrix2Dオブジェクト
がありまして、
Fusion 360 Help
逆行列はクリア出来そうです。
又、Vector3Dオブジェクトには内積があるので、こちらもクリアできそう。
Fusion 360 Help
"F" のインデックス0,1,2に対して "G" との内積行えば良いのかな?
と悩んでる。
悩んでる暇があったら、さっさとコード書いて実際に円を描いて
確認すれば良いんじゃないかと、今気が付く・・・。