我在不同的坐标系中有 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 个 - 红色。红色应沿红色段定向。但我没有看到红色的。你能帮我找出这里有什么问题吗?红色圆柱没有出现在绿色圆柱坐标系的中心。