0

我的 .c 程序使用 glut 创建了一个对象并将纹理映射到该对象上。然后用户可以操作该对象。当对象按比例放大然后按比例缩小时,它会移出窗口并移出视野。我如何确保对象在缩放时保持居中或替代不能移出窗口?如果需要,我可以包含我的代码。

我在想,如果我总是从对象的中心缩放,这会有所帮助,但不确定如何做到这一点,因为它似乎总是从角落缩放,导致它移出屏幕

好的,所以图像最初似乎是从中心缩放的,但是当图像被翻译后,之后的任何缩放都会导致它移动?

4

3 回答 3

0

为此,您需要在对象和窗口边缘之间创建碰撞检测算法。如果屏幕上对象的边缘或像素碰到窗口的边缘,则不应再进一步。

网上有很多关于这方面的资料,我相信你可以找到一些例子。

于 2012-04-22T13:18:16.837 回答
0

听起来好像缩放操作没有从对象中心位置缩放对象,这将导致对象远离其原点。

确保在任何转换之前执行缩放操作。

于 2012-04-22T13:21:00.517 回答
0

对象是一组点。例如,如果它们的所有坐标都是正的,则缩放看起来像是从角落完成的。为了防止这种情况,您需要自己进行一些翻译。

glScaled(...);
glTranslated(/*-1 * center coordinates relative to the object*/);
//draw the object

请注意,使对象居中的方法不止一种。最简单的一种是找到边界框的中心。

于 2012-04-22T13:45:19.757 回答