結びトーラスを作ろう!


  • Global Moderator

    リンゴ曲面の式から、log(対数)の項を除くと、トーラスになってしまいます。

    0_1522479287250_no-log-function.png



  • @ソム さん
    綺麗だしおもしろいですね。パラメータを変えて遊んでみたくなります(^^♪。がしかし!!
    ただ今二次元世界にて迷走中(謎)(;'∀')


  • Global Moderator

    @riffraff さん

    こちらは三次元です。お互い迷走の果てにどこかで出会うことがあるのでしょうか!?


    三葉結びを変形させて、3Dプリント用のオブジェを作っている人がいました:

    0_1522536979872_Thingverse243260.png
    https://www.thingiverse.com/thing:243260

    肝心の部分の関数が公開されていませんが、作者が以下で方法の概要を説明しています。Stereographic Projectionという、世界地図作りに関係しそうな変換を使っているそうです。


  • Global Moderator

    torus knot(今作ろうとしている「結びトーラス」とは別です。トーラス結び?です)には、分類があって、
    alt text
    この元になった結びは、T(3,2)と呼ばれるそうです。詳しいことは理解していません。

    それと似たものに、T(2,3)というのがあって、式の2,3を置き換えればできるようです:
    0_1522541164813_surface-g23.png

    こちらでも、s3Projによって裏返し変換をしてみました。基準点は適当に選びました:
    0_1522541261346_inverted-torus-knot23_1.png

    やはり結びトーラスが出来ました。


  • Global Moderator

    s3Proj 関数によって裏返しを行っている限り、「日本数学会のマーク」のような歪みのない結びトーラスは作れそうにはありません。裏返ったチューブのうち、再外殻となる部分が軸対称にはならないし、内部の結び部分の太さも一定になりません。

    さてどうやるのでしょうか? 「リンゴは結びトーラスを作るヒントだ」で参考にした「ずけやま」さんのところでも、未解決のようです(https://twitter.com/ru_sack/status/919046948866310147 )。

    頭の使いどころです。


  • Global Moderator

    外殻部分のトーラスを作るだけなら簡単です。

    0_1522543806773_horn-torus-cut.png
    手前の1/16を切り取って、内部を見せています。

    Mathematica
    ParametricPlot3D[
     {Cos[u] (1 + Cos[v]), Sin[u] (1 + Cos[v]), Sin[v]},
     {u, -Pi, Pi}, {v, -Pi, Pi}, Mesh -> True, 
     PlotRange -> {{All, 7/8}, All, All}, PlotStyle -> Opacity[0.5], 
     Axes -> None, Boxed -> False]
    

    例として、horn torus という、浮き輪のチューブ部分が内部でぎりぎり接するような形状のものです。

    この場合のパラメトリック曲面は、パラメータu がチューブの中心軸に沿った方向、パラメータ v が、中心軸の周りの回転方向を表現しています。

    他方、結びの曲面を作るのも比較的簡単です。この場合には、チューブの軸に沿った方向のパラメータが t, 軸の周りの回転方向がθで表現されていました。

    これらを合成できれば、結びトーラスが出来そうです。三葉結び曲面の3つある葉のうち、1葉をトーラス曲面になるように変形すればよいわけです。しかし、難しいのは、トーラスの外に相当する部分が、結び曲面ではチューブの中心軸になっていて(またはその逆)、裏返しの関係になっていることです。また、トーラス曲面のパラメータuは結び曲面のパラメータtにそのままでは接続できないということもあります。


  • Global Moderator

    s3Proj はヒントになりそうです。

    例えば、太さが2の直線状のチューブ曲面があって、以下のように原点に基準点(黒丸)があるとします。

    0_1522551106895_knot-in-a-torus.png

    このとき、チューブ曲面上の点(赤丸)を、原点からの距離に応じて青い円断面上に変換する関数があれば、その関数は、無限長のチューブ曲面を、青い円を断面に持つ、ホーン・トーラス曲面に変換するものになります。この関数を求めてみると、基準点からの距離を d としたとき、1/d^2 の距離に移動させる関数であることが分かります。これは、実は、s3Proj そのものでした。

    つまり、s3Proj をうまくつかえば、外殻のトーラスは歪み無く作れるということです。元のチューブ曲面が直線であり、基準点を中心軸上に置けばそうなります。

    0_1522551858879_s3Proj1.png


  • Global Moderator

    これすなわち、何を意味するかというと、ホーン・トーラスを、チューブのパラメータ t と θで表現可能ということです。元の曲面を先のコメントのピンク色のチューブ {cosθ, sinθ, t} として、これを s3Projで変換すればよいわけです。

    こうなります:

    0_1522557800723_t-theta-HornTorus.png

    あとは、これを結び曲面に接続してやるとよさそうです。


  • Global Moderator

    クラインの壷の練習。

    0_1524382285058_KleinsBottle_.png

    Mathematica
    x[u_, v_] := If[v < 2 Pi, (2.5 - 1.5*Cos[v])*Cos[u],
       If[v < 3 Pi, -2 + (2 + Cos[u])*Cos[v],
        -2 + 2 Cos[v] - Cos[u]]];
    y[u_, v_] := If[v < 2 Pi, (2.5 - 1.5 Cos[v])*Sin[u],
       Sin[u]];
    z[u_, v_] := If[v < Pi, -2.5*Sin[v],
       If[v < 2 Pi, 3 v - 3 Pi,
        If[v < 3 Pi, (2 + Cos[u])*Sin[v] + 3 Pi,
         -3 v + 12 Pi]]];
    
    ParametricPlot3D[{x[u, v], y[u, v], z[u, v]}, {u, 0, 2 Pi}, {v, 0, 
      4 Pi}, Exclusions -> None, PlotStyle -> Opacity[0.2], 
     Boxed -> False, Axes -> None, MaxRecursion -> 15, PlotPoints -> 100, 
     PlotTheme -> "ThickSurface"]
    

    v が一周してきたところに継ぎ目が出来てしまうのは、仕様?みたい。


  • Global Moderator

    このクラインの壷の式は、ある物理学者がGnuplotを解説されているページから拝借したものです。
    http://www.gnuplotting.org/tag/pm3d/

    以下は私の解釈です。

    曲面は、u, v の2変数で記述されていて、u がチューブの円周方向の、v がチューブの軸方向の曲面位置を記述しています。v について、条件分けがあって、4つの部品から構成されています:

    0_1524385124114_KleinsBottle-2-01.png



パズルハウスへの接続が失われたと思われます。再接続されるまでしばらくお待ちください。