GLSLの特別な相対性シェーダー
特別な相対性理論のローレンツ変換を理解するのに役立つGLSLシェーダーを実装しようとしています。 2つの軸に整列した慣性オブザーバーOとを考えてみましょう O'。オブザーバーO'は、O速度を伴ったオブザーバーに対して動いていv=(v_x,0,0)ます。 O'座標で説明すると、イベントP' = (x',y',z',ct')は座標を変換します(x,y,z,ct)= L (x',y',z',ct') ここで、Lはローレンツ変換と呼ばれる4x4行列であり、イベントP 'の座標を座標で書き込むのに役立ちますO。 (詳細はhttp://en.wikipedia.org/wiki/Lorentz_transformation#Boost_in_the_x-directionをご覧ください) すべての頂点に速度を指定してローレンツ変換を適用する最初の予備的な頂点シェーダーを書き留めましたが、変換を正しく機能させることができません。 vec3 beta= vec3(0.5,0.0,0.0); float b2 = (beta.x*beta.x + beta.y*beta.y + beta.z*beta.z )+1E-12; float g=1.0/(sqrt(abs(1.0-b2))+1E-12); // Lorentz factor (boost) float q=(g-1.0)/b2; //http://en.wikipedia.org/wiki/Lorentz_transformation#Matrix_forms vec3 tmpVertex = (gl_ModelViewMatrix*gl_Vertex).xyz; float w = gl_Vertex.w; mat4 lorentzTransformation = mat4( 1.0+beta.x*beta.x*q , beta.x*beta.y*q , beta.x*beta.z*q …