我的 .c 程序使用 glut 创建了一个对象并将纹理映射到该对象上。然后用户可以操作该对象。当对象按比例放大然后按比例缩小时,它会移出窗口并移出视野。我如何确保对象在缩放时保持居中或替代不能移出窗口?如果需要,我可以包含我的代码。
我在想,如果我总是从对象的中心缩放,这会有所帮助,但不确定如何做到这一点,因为它似乎总是从角落缩放,导致它移出屏幕
好的,所以图像最初似乎是从中心缩放的,但是当图像被翻译后,之后的任何缩放都会导致它移动?
为此,您需要在对象和窗口边缘之间创建碰撞检测算法。如果屏幕上对象的边缘或像素碰到窗口的边缘,则不应再进一步。
网上有很多关于这方面的资料,我相信你可以找到一些例子。
听起来好像缩放操作没有从对象中心位置缩放对象,这将导致对象远离其原点。
确保在任何转换之前执行缩放操作。
对象是一组点。例如,如果它们的所有坐标都是正的,则缩放看起来像是从角落完成的。为了防止这种情况,您需要自己进行一些翻译。
glScaled(...);
glTranslated(/*-1 * center coordinates relative to the object*/);
//draw the object
请注意,使对象居中的方法不止一种。最简单的一种是找到边界框的中心。