three.jsでforce-3dプロット

  • グラフのノードをその物理反発力に基づいて、エッジ長をそろえて座標を決めるアルゴリズムが(3d-)force layout
  • igraphパッケージにはlayout_with_fr()関数があるが
  • ジャバスクリプトで3d-interactive表示させるライブラリと連携させるRパッケージthreejsのデフォルトレイアウトがこのforce-layoutになっている
  • また、同パッケージでは3Dアニメーションで自動ぐるぐる回転表示もさせるが、そこでは、複数のレイアウトを指定しそれを渡り歩かせるという仕組みで、いろいろな見せ方をさせる、という方法を取っている

Quiver グラスマニアン

  • Quiver grassmannian can be anythingという小文があった
  • その元ネタ文はEvery projective variety is a quiver Grassmannianというものだった
  • 前者が具体例y^2 = x^3 + 1という楕円曲線を用いて説明しており、後者が一般論で記述してある
  • 記法、変数の対応を取らないとよくわからないので、上記2文章が手元にあるものとして、それを読む手助けとするべく、対応を書き留めておく
  • Quiverは3つのベクトル空間 V_1,V_2,V_3とそれらを結ぶ写像からなるが、V_2 \to V_1はk個の写像(具体例ではk=1)、V_2 \to V_3 はn+1個の写像(具体例ではn+1=3)
  • n=2 : y^2 = x^3 +1という楕円曲線を、y^2 z = x^3 + z^3という斉次多項式で表してやったときに、P^2射影平面の話になるが、nはそのn
  • それをM個の値の組で表されるP^{M-1}射影空間に引き上げるのだが、このM=10
  • P^nV_3に、P^{M-1}V_2に対応する
  • 具体例小文で6x3行列が出てくるが、これが一般論小文のA(x)に相当する
  • \mathbf{m} = (m_0,...,m_n) in  \mathbf{N}^{n+1}というのは、x^2yだったらm_0=2,m_1=1,m_2=0ということで、2+1+0 = 3 = d

楕円曲線と射影平面

  • 楕円曲線というものがあるという(Wiki: こちら)
  • 2次元ユークリッド平面でx,yを使って式を書いてもよいが、射影平面で考えると「非特異な射影代数曲線」との呼称ができて、わかりやすいらしい
  • 楕円曲線を2次元ユークリッド平面に描き、それに遠近法で無限遠点を1点に収束させて描くと、その曲線は無限遠点に向かう
  • 遠近法での見え方を2次元プロットするためには、(x,y)座標を線形変換で「斜め」にするとともに、遠くに行くとだんだん間隔が狭くなるようにする必要がある
  • そのような変換では、同次座標を使う(線形変換行列では3x3行列を使う)。そのうえで、第3座標で第1、第2座標を徐することで、そのような絵が描ける
  • この線形変換・座標計算は、射影空間座標の扱いそのものである
  • そして、このようにとらえると、楕円曲線上の一般的な2点を結んだ直線が無限遠点で交わることもわかる
  • この収束する1点を基点と呼び、それを使って「楕円曲線は特定の基点 O を持つ種数 1 の代数曲線」と言うらしい
  • ちなみに射影多様体Wikipediaにある図はそのことを表すとともに、楕円曲線上の点に群構造が入っていることを説明している

f:id:ryamada:20190921055721j:plain

  • 以下のRコードは、y^2 = x^3 + 1を透視図法で描くもの

3次元回転の群

  • 3次元の回転は、単位四元数であらわされる。\cos{\frac{\theta}{2}}  \mathbf{1} + \sin{\frac{\theta}{2}} (\alpha \mathbf{i} + \beta \mathbf{j} + \gamma \mathbf{k})
  • これは、(\alpha,\beta,\gamma)方向(単位)ベクトルを軸に、角度\thetaの回転に相当する
  • この回転を、\theta,\alpha,\beta,\gammaをパラメタにして配置すると、0 \le \theta < 2 \piととれば、半径2\piの3次元球(中身の詰まった)に相当する
  • ここで、原点は、回転角が0なので、無回転=何もしないに相当する。半径2\piの球面上の点は、すべて回転角が2\piであり、これも、結局何もしないので、この球面と原点は同一視されるべきである。また、(\alpha,\beta,\gamma)軸での\theta回転と(-\alpha,-\beta,-\gamma)軸での回転-\thetaも同じなのでこれらも同一視されないといけない
  • あっちもこっちも同一視して貼り付けないといけなくて、こんがらがる
  • このなめらかに閉じた3次元回転の多様体は、以下のように、回転角の取り方を少し変えて、定義するのが普通である
  • 回転角を 0 \le \theta < 2\piと取る代わりに、-\pi \le \theta < \piと取る
  • こうすると、自然に、(\alpha,\beta,\gamma)軸での\theta回転と(-\alpha,-\beta,-\gamma)軸での回転-\thetaとが同一の場所として表されるので、これらを同一視する問題は、座標取りによって解決される
  • 前の座標取りでは、原点と半径2\piの点との同一視が必要だったが、今度の座標取りでは、半径\piの球面の対蹠点の同一視がそれに対応する
  • 結局、3次元回転は、半径\piの充実球であって、その表面について、対蹠点同一視をすることに相当する
  • 射影幾何ではn次元球の表面を対蹠点について同一視したものを、RP^n射影平面と呼ぶので、3次元回転がRP^3に相当することがわかる
  • 一つ次元の低いRP^2は、円板があって、その外周を張り合わせたものであることはこちらの記事に書いた通りで、2次元多様体である閉曲面としてRP^2S^2,T^2(球面とドーナツトーラス]と合わせて基本閉曲面3要素の一つになっている
  • 2次元射影平面が円板の外周対蹠点同一視であることをもう少し、同次座標にも言及しつつ、お話し風に書いておく
  • 今、射影平面は、(\lambda x, \lambda y, \lambda)というように表す。これにより、3次元空間にある原点を通る直線が射影平面の点に対応する
  • 直線が、原点を通り、z=1平面と交わることなく、xy平面上にある場合は、射影平面では「無限遠点」とみなす
  • 結局、射影平面はz=1の2次元平面と無限遠点とからなっている
  • ここで、対蹠点が同一視されるというのは何に相当するかというと、[tex;(\lambda x, \lambda y, \lambda)]であらわされる直線と、\lambda ' (-x), \lambda' (-y), \lambda')で表される直線が同じ直線であることに相当する
  • 今、[tex;(\lambda x, \lambda y, \lambda)]で表される直線のうち\lambda \ge 0の部分と、\lambda ' (-x), \lambda' (-y), \lambda')で表される直線のうち\lambda' \ge 0で表される部分をそれぞれ考えることにして、それぞれをz=1,z=-1平面上の点に対応付けるとする
  • さらに無限遠点に相当する直線たちについても考えると、z=1,z=-1の平面が無限遠で張り合わさっていて、位相的に球面のようにみなせる
  • ここで、このサンドイッチの対応直線を同一視することは、球面の対蹠点の同一視と同じに見える
  • 3D rotation groupのWikiこちら
  • Real Projective SpaceのWikiこちら

Combinatorial Geometry

組み合わせ幾何についてのこちらの文書によれば

    • Incidence Structure
      • An incidence structure is a triple (V, B, ∼) so that V, B are disjoint sets and ∼ is a relation on V \times B.
      • We call elements of V points, elements of B blocks or lines and we associate each line with the set of points incident with it.
      • So, if p \in V and b \in B satisfy p ∼ b we say that p is contained in b and write p \in b and if b, b' \in B we let b \cap b' = \{p \in P : p ∼ b, p ∼ b'\}