5. Map-概要
vec2 F( in vec2 u, vec2 v )
vec4 r3_to_s3( in vec3 p )
float field( in vec4 q )
float map( in vec3 p )
{
return field(r3_to_s3(p));
}
(位置)-> (超球面)-> (uv)-> (距離)
r3_to_s3 -> field ( F )
R3
S3
R2
R1
5
7. field : (超球面)-> (距離)
F : に通し、2DSDFに通す
F は二つの複素数 を引数に取り、このコードでは8の字結び目
を使用している
得られたvec2は曲線の進行方向と回転に相対的なuv座標
(最終的な結び目のSDFの太さが一定で無いのは、この座標系の基底
ベクトルの大きさが一定では無い為です)
この F について、なぜ結び目を作ることが出来るのかはこの論文で
解説されているみたいですが、理解できませんでした...
S3
R1
R →
4
R2
u, v
7