这是我用于翻译点的效用函数:
void translatePoints(float x, float y, int transX, int transY)
{
glMatrixMode(GL_MODELVIEW);
//glLoadIdentity();
glBegin(GL_LINES);
// original points
glVertex2f(x,y);
glVertex2f(x + transX, y + transY);
glEnd();
glFlush();
}
我有类似的功能,用于绘制圆,缩放点和旋转点 在不使用矩阵转换的情况下,我必须从myDisplay传递x和y值,并使形状平移并从中心缩放和旋转。 如果我有一个有6个点的形状,就像一个星星,这个功能不起作用。 我想这个功能可以工作,它必须返回两个点,否则我可以使用指针。但我不确定如何实现其中任何一个,我也相信我不应该在这个功能中提出这些要点。 最后,我必须绘制一个不同形状的场景。
答案 0 :(得分:1)
我认为你想要的是
glVertex2f(x + transX, y + transY);
glVertex2f(a + transX, b + transY);
你的线从(x,y)到(a,b)。你是从你的原始点到你翻译的原始点画一条线,而不是翻译这两点。
希望我能正确解释你的问题
答案 1 :(得分:1)
我理解你的问题,我试着在这里解释一下。 例如,让我们使用四点绘制2D正方形。制作一个可维护的,其中包含绘制正方形的共同值,假设变量名称如下所示
x1, y1, z
x2, y2, z
x3, y3, z
x4, y4, z
这里z坐标是固定的。现在,如果你想创建一个函数来翻译正方形,那么就像这样实现你的函数。
void translateSquare(int transX, int transY)
{
x1 + transX; y1 + transY;
x2 + transX; y2 + transY;
x3 + transX; y3 + transY;
x4 + transX; y4 + transY;
}
当您调用此函数时,您的方块将按值transX和transY进行转换。因此,为您的显示器制作类似于此的功能。