MC楕円補間もどき座標計算の考え方 MC楕円補間もどき座標計算の考え方
このページをIEで正しく見る為にはMathPlayerのインストールが必要です。
インストールはDownload MathPlayer>から入ってDownload MathPlayer Setupをクリック、MathPlayerSetup.exeを実行(或いは保存⇒実行)し、インストール後はIEを再起動します。
再起動したIEでこのページを開くとまず間違いなく警告が出ます。その際にはアドオンの許可を実行して下さい。
尚、このページはPeter Jipsen氏のASCIIMathML.jsを利用させて頂きました。同氏に感謝。同スクリプトの詳細を知りたい方はASCIIMathMLへ。
※小難しい公式等の説明はそれ相応の数学のページ等を参考にして下さい。
原点`O(0, 0)`を中心とする標準の楕円方程式は以下で与えられます:
`x^2/a^2+y^2/b^2=1`
`x` `y` `O` `a` `-a` `b` `-b`

更にその楕円周上の点`P(x_0, y_0)`は角`theta`を使って次のように表されます:
`x_0=a cos theta`
`y_0=b sin theta`
`P(x_0, y_0)` `theta` `x` `y` `O` `a` `-a` `b` `-b`

単純に考えれば上記点`P`の連なりの座標を求め、それに工具径補正を利用して刃物を動かしてやれば楕円もどきの加工が出来る筈です。
けれども私の経験上、機械や制御装置の性能にもよるのでしょうが、極端に小さい楕円、ピッチが過小の場合、特に内径切削の場合等は切り込み過ぎ等のアラームが出る事度々です。
ならば刃物半径分大きくした楕円で計算して加工すればいいように思われますが、楕円の場合は円と違ってそう簡単ではありません。

円の場合`O`から点`P`に引いた直線は点`P`での円の接線と直交する故、更にそれに刃物半径分加算した座標を求めればその加工位置は、円周上のどの点であっても、円周上の点と一致します。
刃物半径分大きくした円 点`P`での円の接線 `P` `theta` `x` `y` `O`

しかし楕円では`O`から点`P`に引いた直線は、点`P`が`x`軸上、`y`軸上にある時以外、点`P`での楕円の接線と直交しない故、単純に刃物半径分加算した座標ではその加工位置は楕円周上の点とは一致しません。
刃物半径分大きくした楕円 点`P`での楕円の接線 `P` `theta` `x` `y` `O`

そこで必要となるのが点`P`での楕円の接線に直交する直線、特にその傾きです。
あとは刃物半径にその傾きの余弦、正弦を掛けた値を点`P`の座標に加算すれば必要とする刃物中心位置が求まり、加工位置も一致します。
点`P`での楕円の接線 `y=mx+ alpha` 点`P`での楕円の接線に直交する直線 `y=nx+ beta` `P` `P'` `theta` `x` `y` `O` `a` `-a` `b` `-b` `x_1` `y_1` `r`

点`P`での楕円の接線の傾き`m`は楕円の方程式の両辺を`x`で微分することで求められます:
`(2x)/a^2+(2y)/b^2*dy/dx=0`
`:.dy/dx=-(b^2x)/(a^2y)`

よって点`P`での楕円の接線の傾き`m`は:
`m=-(b^2x_0)/(a^2y_0)`

故に直交する直線の傾き`n`は:
`n=-1/m=(a^2y_0)/(b^2x_0)`

これを`theta`を利用して表すと:
`n=(a^2 b sin theta)/(b^2 a cos theta)=a/b tan theta`

求めたい点を`P'`、`PP'`の`x`軸方向距離を`x_1`、`y`軸方向距離を`y_1`、刃物半径を`r`とすると:
`y_1=nx_1`
`x_1=y_1/n`

また:
`x_1^2+y_1^2=r^2`

故に`x_1`は:
`x_1^2+(nx_1)^2=r^2`
`x_1^2=r^2/(1+n^2)`
`:.x_1=r/sqrt(1+n^2)`
`y_1`は:
`(y_1/n)^2+y_1^2=r^2`
`y_1^2=r^2/(1+1/n^2)`
`:.y_1=r/sqrt(1+1/n^2)`

故に図の場合の点`P'`の座標は:
`x=a cos theta +r/sqrt(1+n^2)` `y=b sin theta +r/sqrt(1+1/n^2)`
ただし: `n=a/b tan theta`