私が取り組んでいる OpenGL アプリでは、半径 r の球と緯度/経度の点の配列があります。
球体をレンダリングしてから、各緯度/経度で正方形をレンダリングしたいと考えています。私が立ち往生している部分は、接線のように、どの場所でも球の表面に垂直になるように正方形を回転させています。
球は原点を中心にしています。
私が持っている疑似コードでは:
lat = rand( 180.0 ) - 90.0;
lng = rand( 180.0 );
phi = ( 90.0 - lat ) * PI / 180.0;
theta = ( 360.0 - lng ) * PI / 180.0;
x = radius * sin( phi ) * cos( theta );
y = radius * cos( phi );
z = radius * sin( phi ) * sin( theta );
square.setRotation( rx, ry, rz );
square.setPosition( px, py, pz );
rx、ry、rz の値を考えたいと思います。もちろん、そのうちの 1 つは 0 である必要があり、他の 2 つは緯度/経度に接続されていると思いますが、試したすべての組み合わせは機能しませんでした。
JavaScript の例: http://jsfiddle.net/NZEBH/2/