我想在球体表面上放置立方体,如:
我正在使用Java3D。我的球体表面有一个点:
double s = (random.nextInt(360));
double t = (random.nextInt(360));
double radius = 180;
double x = radius * Math.cos(s) * Math.sin(t);
double y = radius * Math.sin(s) * Math.sin(t);
double z = radius * Math.cos(t);
我需要在这一点上放置立方体的中心并翻译和旋转立方体,如图所示。 我怎样才能做到这一点?
我尝试用不同的轴旋转s和t。但是有我的结果:
我需要立方体的面和球体表面像第一张图像一样垂直。
答案 0 :(得分:0)
最简单的解决方案是按照3个调用的顺序进行:
// having s,t,radius
// transform cube
GL11.glRotatef(s, 0, 0, 1);
GL11.glRotatef(t, 1, 0, 0);
GL11.glTranslatef(0, 0, radius);
如果你需要计算这样的矩阵供你的程序使用,你可以按照glRotate& amp; glTranslate规范如何修改当前矩阵并复制它们的行为。或者,您可以使用glGetDoublev(GL_MODELVIEW_MATRIX)在这些操作之后查询GL矩阵;