接線と2点から円を求める
正確に言うと、接線の角度と接点、プラスもう1点から円を求めるわけですが。
方程式立てたらぐちゃぐちゃになったので投げ出して、図形的な手法に走りました。三角関数の整理ムリw
ここでは、角度は方向を考慮した、0~πまでの値として考えます。
接線ベクトルの角度をθ、接点をP1(x1,y1)、もう1点をP2(x2,y2)とします。
P1 から P2 に向かうベクトルの長さを L とすると、式①
角度ψは、接線ベクトルの角度θとP1 から P2 に向かうベクトルの角度αから式②
円の半径 r は式③
φ = ψなので、方向を考慮した円の半径 r は式④
ここで円の角度によるパラメータ表示を変形してP1の座標を代入すると
b = y1 + r cosθ … ⑤
a = x1 - r sinθ … ⑥
ちょっとおかしいですね?
いえいえ、大丈夫、θは接線の角度だから。
これに半径を代入すれば、目的達成です。
なお、ψの値は直角を超えたり負数になったりするので、図形的にはちょっとおかしな感じがしますが、実際にはψ>90°のときはφ=180 - ψ、ψ<0°の時はφ=180 + ψとなります。このときそれぞれsinφ=sin(180 - ψ)=sinψ、sinφ=sin(180+ψ)=-sinψという関係が成立するため、式としては問題ありません。
r が負の場合は逆向きと定義すれば dxf で言うところのふくらみの定義ともうまく合致します。
ちなみに、ふくらみは角度P1-O-P2の1/4の正接となっています。ここで、角度P1-O-P2は2ψなので、ふくらみの値としては
tan(ψ/ 2)
を指定すればよいことになります(たぶん)。
方程式立てたらぐちゃぐちゃになったので投げ出して、図形的な手法に走りました。三角関数の整理ムリw
ここでは、角度は方向を考慮した、0~πまでの値として考えます。
P1 から P2 に向かうベクトルの長さを L とすると、式①
角度ψは、接線ベクトルの角度θとP1 から P2 に向かうベクトルの角度αから式②
円の半径 r は式③
φ = ψなので、方向を考慮した円の半径 r は式④
ここで円の角度によるパラメータ表示を変形してP1の座標を代入すると
b = y1 + r cosθ … ⑤
a = x1 - r sinθ … ⑥
ちょっとおかしいですね?
いえいえ、大丈夫、θは接線の角度だから。
これに半径を代入すれば、目的達成です。
なお、ψの値は直角を超えたり負数になったりするので、図形的にはちょっとおかしな感じがしますが、実際にはψ>90°のときはφ=180 - ψ、ψ<0°の時はφ=180 + ψとなります。このときそれぞれsinφ=sin(180 - ψ)=sinψ、sinφ=sin(180+ψ)=-sinψという関係が成立するため、式としては問題ありません。
r が負の場合は逆向きと定義すれば dxf で言うところのふくらみの定義ともうまく合致します。
ちなみに、ふくらみは角度P1-O-P2の1/4の正接となっています。ここで、角度P1-O-P2は2ψなので、ふくらみの値としては
tan(ψ/ 2)
を指定すればよいことになります(たぶん)。
---この下に広告が入るかもしれませんが、私とは一切関係ありません。---
■
[PR]
※このブログはトラックバック承認制を適用しています。ブログの持ち主が承認するまでトラックバックは表示されません。
ブログの持ち主だけに見える非公開コメントです。