2012年5月11日金曜日

Asymptoteでレムニスケートを描く2

少し前にレムニスケートの媒介変数表示が実数全体で定義されているため、Asymptoteでの描き方が分からないというような浅学であることがバレバレの投稿をしてしまいました。
レムニスケートを極形式で表せば一発で解決してしまうのですね。
\[
r^2 =a^2 \cos 2\theta
\]
size(500,0);
import graph;

//レムニスケート
real lem=1.2;
real r(real th){
  if(cos(2*th)>=0){return lem*sqrt(cos(2*th));}
  else{return 0;}
}
pair Z(real th){return (r(th)*cos(th),r(th)*sin(th));}
draw(graph(Z,-pi/4,pi/4,100));
draw(graph(Z,3pi/4,5pi/4,100));


動径$r$の定義式に条件分岐してありますが、描画する部分で$\cos 2\theta$が負の値を取らないような範囲に制限しているためあまり意味はありません。
この媒介変数表示を用いて$\sqrt{z(z-1)}$のRiemann面の模式図を描いてみました。


うーん。まだ見づらいですね。透過させてみたところで、手前にあるものと奥にあるものを自動で判別して描画してくれるわけではないようでした。