「ロマンティック数学ナイトボーイズ」の発表した記事を書きます。
記事
- ちょっと距離についてまとめてみた。
- GLSLレイマーチング研究_距離関数について勉強してみた15(Heartの関数を作ってみた)
- GLSLレイマーチング研究_距離関数について勉強してみた16(Heartの関数を作ってみた_その2)
やったこと
レイマーチングの距離関数のlength関数を数学的な距離関数に置き換えてみた
glslでの、lenghtの定義
GLSLレイマーチング研究_距離関数について勉強してみた01(距離関数と球)
lenght(p) = sqrt(p.x*p.x+p.y*p.y+p.z*p.z) - r
このlenght関数を以下の距離関数で置き換え見る。
ハミング距離
float lengthHamming(vec3 p){
// カメラの位置を変化させる
p = vec3(p.x*sin(time),p.y*sin(time),p.z*sin(time));
if(p==vec3(0.0, 0.0, 0.0)){
return 2.0;
}else{
return 3.0;
}
}
マンハッタン距離
float lengthManhattan(vec3 p){
return abs(p.x)+abs(p.y)+abs(p.z);
}
チェビチェフ距離
float lengthChebyshev(vec3 p){
return max(max(abs(p.x), abs(p.y)), abs(p.z));
}
L^2ノルム(実装できず)
// L^2ノルムのプログラミングでの実装
float normLebegueTwo(vec3 p){
float split = 10.0;
float threeSplit = split * split * split;
float sumLeght = 0.0;
vec3 splitXYZ = vec3(p.x/split, p.y/split, p.z/split);
for(int i=0; i < 1000; i++){
sumLeght += length(p) * splitXYZ.x * splitXYZ.y * splitXYZ.z;
}
return sumLeght - 1.0;
}
で、ハートの変化をみる
ユークリッド距離
ハミング距離
マンハッタン距離
チェビチェフ距離
ハートの形は、距離ごとに変化します…
- ハミング距離恋愛は、なんかヌメってしている
- マンハッタン距離恋愛は、なんか怪しい
- チェビシェフ距離恋愛は、初心者マーク?
- $L^2$ノルム恋愛は、僕のPCでは実装できない