我在不同的坐标系中有2个物体:行星和圆柱体。我有两个物体的眼睛坐标。我想沿着连接它和行星的矢量定位圆柱体。
glLoadMatrixf( PlanetTransform);
// .. draw planet
glLoadMatrixf( CylinderTransform);
glColor3f(0, 1, 0);
DrawCylinder();
// draw vector that connects cylinder and planet
glColor3f(1, 0, 0);
glLoadIdentity();
glBegin(GL_LINES);
// planet eye pos e.g. (0.045; -0.049; -0.186)
glVertex3f(point1.x, point1.y, point1.z);
// cylinder eye pos e.g. (-0.109; -0.064; -0.203)
glVertex3f(point2.x, point2.y, point2.z);
glEnd();
// orient cylinder along red vector
// TVector normal(0, 0, 1);
glLoadIdentity();
gluLookAt(point2.x, point2.y, point2.z,
point1.x, point1.y, point1.z,
normal.x, normal.y, normal.z);
DrawCylinder();
绘制柱面代码:
void DrawCylinder()
{
glPushMatrix();
glRotatef(90, 1, 0, 0);
gluCylinder(gp_quadratic, 0.01, 0, 0.03, 15, 15);
glPopMatrix();
}
我还尝试将normal指定为:
TVector normal;
TVector::cross(point2 - point1, TVector(0, 0, 1), normal);
所以最后我希望看到2个圆柱--1个绿色,1个红色。红色应沿红色部分定向。但我看不到红色的。你能帮我找一下这里有什么问题吗?红色圆柱没有出现在绿色圆柱坐标系的中心..
答案 0 :(得分:0)
gluCylinder(/ ** /)
我在我身后相当一个夜班,所以我的视力可能有缺陷,但尝试它的成本很低,不是。
如果我错了,请尝试为行星使用glPolygonMode(GL_FRONT_AND_BACK,GL_LINE),然后查看圆柱体的位置。