【发布时间】:2013-07-25 12:41:16
【问题描述】:
我想测试世界上的任何给定点是否在四边形/平面上?四边形/平面可以按任何值平移/旋转/缩放,但它仍然应该能够检测给定点是否在其上。如果四边形没有应用任何旋转/缩放/平移,我还需要获取点应该在的位置。
例如,考虑一个位于 0,0,0 的四边形,大小为 100x100,沿 z 轴旋转 45 度角。如果我在世界上的鼠标位置在 (x, y, 0, ),我需要知道该点在当前变换中是否落在该四边形上?如果是,那么我需要知道是否没有对四边形应用任何变换,那个点会在哪里?任何代码示例都会有很大帮助
【问题讨论】:
-
我认为这是一个 XY 问题。我的意思是,您当然可以 inverse 转换您的观点,然后使用常规的平面计算,但是如果您正在实现诸如拾取之类的东西(看起来很像),请说明它并且答案将能够为此进行调整。现在它有点太宽泛了。
-
"考虑一个大小为 100x100 的 0,0,0 的四边形"。这是未指定的。您真的是指四边形,还是指矩形(完全指定为宽度 x 高度)?这对答案有很大影响。
-
@MSalters 是吗?任意四边形的计算只需要前面提到的镶嵌(无论如何都应该用于渲染)。
-
@BartekBanachewicz:是的,例如一个矩形总是凸的。任意四边形不是。
-
@MSalters 我指的是真实渲染。
标签: c++ opengl transformation