「二重らせん」で作成したDNAの二重らせんで渦巻きを作って見ようと思います。
そう言えば、「円周状の二重らせん」では、二重らせんを円周状に丸く繋げました(下図)。
この時、二重らせんを形成する塩基と塩基の間の距離は一定です。それを円周状に並べるにはどうすれば良いでしょうか?
円周上の点の座標は以下の式で計算できます。
x=cx+R×cos (θ)
y=cy+R×sin (θ)
…… 中心座標(cx,cy)、半径R、0°≦θ<360°
θを0から一定の角度で増加させると、隣り合う点(x,y)間の距離は一定となります。
円周の長さは2πRなので、塩基間距離をLとすると、Δθ=2πR/L×360°毎に増加しながら描画すると良いことになります。
前節の方法で渦巻きを描画すると以下の様になります。
同じ角度で回転しながら、円の半径が徐々に大きくなることで、一本一本の線分はどんどん長くなって行きます。
二重らせんの渦巻きを作ろうとする時、塩基間距離を一定の距離にしたいことと相反します。
そこでまず、渦巻きの長さを求めます。
ある時点の渦巻きの半径をRとしましょう。
そこから一周ぐるっと回転して戻って来た時、半径が同じRだったら、それはただの円です。
一周して戻った時、半径がR+ΔRに増加していれば、それは渦巻きとなります。
半径Rの時の円周の長さは2πR、半径R+ΔRなら、2π(R+ΔR)です。
この間を、一周かけてリニアに半径を増加させるのだから、一周分の渦巻きの長さは以下式となります。
(2πR+2π(R+ΔR))/2
一定の距離Lで描画するためには、以下式で計算できるΔθ毎に回転しながら描画して行けば良いことが解ります。
Δθ=(2πR+2π(R+ΔR))/2/L×360°
この様に描画した渦巻きは以下図となりました。
渦巻きが内側から外側に向かって行くにつれ、半径はどんどん大きくなっていきますが、渦巻きを構成する線分一本一本の長さは変わりません。
この様にして、等間隔で塩基対を配置し、渦巻き状の二重らせんが完成しました。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | double_helix_spi.xitr |
2) | 渦巻き描画スクリプト | draw_spiral.olv |
以下、1)をレイトレーシングした結果完成する動画をリンクしておきます。2)は渦巻きを描画するスクリプトです(ご参考)。
最後は、渦巻きの中心部分を凹ませて、渦潮みたいな形になっています。