パースのかかった円の描き方(デジタル限定)

ようやくパースの球が攻略できました。長らくよくわかっていなかったんですが、今朝天啓が降りてきて、やっと描き方を示せる状態になりました。正面と斜めの2パターンさえ描ければ、あとはこの回転形(視心を中心に回転)しかないので、基本形はこの2つと言えます。

 

f:id:reminica:20150301123528p:plain

最初に極と極線について。数学の用語なので詳しくはググってもらうとして、円外の極から円に対して接線を引いたとき、接点を結ぶ直線を極線と言います。ところが上で図示しているのは極を円内に置いています。この場合は円外の極線上の任意の点から円に対して接線を引くと、接点を結ぶ直線は必ず極を通るという性質があります。(SPを通る円は接点を求めるための補助円です。接点と円の中心を結ぶ直線は接線と直交する性質があるので、これとターレスの定理を組み合わせた作図法です。接点の作図に間違いがないことを示すために描いています)

パースの円については、この極がカギを握っています。なぜなら、極は透視図上での楕円の中心と一致するという驚きの性質があるからです。円がSPの正面にいるときは比較的証明が簡単なのですが、円がSPから見て斜めにいるときにも成り立ちます。

実はこの事実に気が付いたのはつい先月の話でして、ここが分かったおかげで円の透視投影は急激に攻略が進みました。

 

宣伝! パースの円に関する詳しい解説は、以下のページにまとめてあります。

円の性質 - 円 - パースフリークス

 

平面図上の楕円の中心位置を把握していると、そこから芋づる式にいろいろと分かることがあるのですが、難しくなるのでそこは置いておくとして、今日はパースのかかった円の描き方でも。作図にはイラレAdobe Illustrator)を使います。同等の機能を持った他のソフトでも可能な手順だと思いますが、アナログ環境では不可能な描き方です。

f:id:reminica:20150301145459p:plain

透視図法では任意の台形を正方形とみなす視点(SP)が存在するので、こだわりがない場合はどんな台形を描いても作図できます。

手順7と9は計算が必要です。私はEXCELを使ってます。7は単純な除算です。(青い線の長さ)÷(赤い線の長さ)を求め、この値を倍率として楕円を横方向に拡大します。手順9は4で引いた直線の幅(W)と高さ(H)を使ってarctan(H/W)で角度を求めます。シアーの角度はマイナスを付けたり、余角を取る(90°から引く)必要があるかもしれないので、プレビューで結果を見て判断してください。

円がSPの正面にいる場合(台形が左右対称の場合)はシアー(手順9)は不要です。SPから見て斜め方向の円(透視図上では楕円)は、正面の楕円をシアーしたものにすぎないということに気が付いたのが、この作図法の発見につながりました。

このやり方の欠点として、(あくまでもイラレの仕様としてですが)楕円の正確な軸の向きをすぐに得られないという点が挙げられます。左図はシアー後のアンカーの配置ですが、楕円の正確な長短軸を引きたい場合は、右図のようなアンカー配置でないと困ります。これについては作図的な解決策がありますので、また別の機会にでも。

f:id:reminica:20150301170653p:plain

最終的な確認ですが、楕円は下図の4点(赤い点)を必ず通らなければなりません。一般に四角形に内接する楕円は1つではないのですが、下図の4点を通るという条件を付け加えれば一意に定まります。つまりこの台形に対して、楕円はこの描き方しか存在しないということです。

f:id:reminica:20150301162908p:plain

 

他のやり方について。

Illustratorには自由変形ツールというものがありますが、Photoshopのそれとは仕様が違うので、任意の台形に内接する楕円を作ろうと思ってもできません。(私の持ってるCS6では。CCではできるのかも)

Photoshopの自由変形を使えば一発で変形できるのですが、マウスドラッグでアンカーポイントを指定する方式なので、完璧な作図精度を出したいときに使えなかったりします。(スナップの精度がいまいちなんですよ。正しいやり方を私が知らないだけかもですが)

その点、上で示す方法は数学的に厳密な方法を取っているので、作図精度は完璧と言えます。(イラレの分解能の限界まで出ます)

私の場合、描いている図の性質上、どうしても完璧な精度を出したいことが多く、このやり方は重宝しています。以前はBlender(3Dソフト)を使っていたこともありましたが、3Dソフトでレンダリングしたあと、イラレでトレースする方法を取ると、やはりトレースの精度という問題に直面します。3Dソフトが直にベクターで出力してくれれば良いのですが、そういう機能って乗ってるのかなあ。レンダリングの方式次第だと思いますが、単純に点を投影していくタイプの描き方だと、ソフトは自分の描いているものが楕円であるという認識すらしてない可能性もあったりで、楕円の中心座標と長短軸の長さと向きを数値で出力してくださいと言ってもできない可能性があります。(これも私が知らないだけかも)

 

参考文献:射影幾何学入門 ―生物の形態と数学―(丹羽 敏雄著)P41~43