在我正在开发的 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 的值。其中一个当然应该是 0,我想另外 2 个连接到 lat/lng 但我尝试过的所有组合都没有奏效。
这里的 JavaScript 示例:http: //jsfiddle.net/NZEBH/2/