gpt4 book ai didi

c++ - 如何检查一个点是否在透视投影的四边形内?

转载 作者:行者123 更新时间:2023-11-28 07:30:19 33 4
gpt4 key购买 nike

我想测试世界上是否有任何给定点在四边形/平面上?四边形/平面可以按任何值平移/旋转/缩放,但它仍然应该能够检测给定点是否在其上。如果未对四边形应用任何旋转/缩放/平移,我还需要获取该点的位置。

例如,假设四边形位于 0, 0, 0,大小为 100x100,沿 z 轴旋转 45 度角。如果我的鼠标在世界中的位置是 ( x, y, 0, ),我需要知道那个点是否落在当前转换中的那个四边形上?如果是,那么我需要知道是否没有对四边形应用任何变换,那个点应该在哪里?任何代码示例都会有很大帮助

最佳答案

光线转换方法可能是最简单的:

  1. 使用gluUnProject() 获取要转换到场景中的光线的世界空间方向。射线的原点是相机位置。
  2. 通过矩形变换的逆变换将这条光线放入物体空间。请注意,您需要同时变换射线的原点和方向 vector 。
  3. 使用标准射线-平面相交测试计算该射线与 XY 平面之间的交点。
  4. 检查交点的 x 和 y 值是否在您的矩形边界内,如果在,那就是您想要的结果。

数学库,例如 GLM如果您对此处涉及的一些数学没有信心,将会非常有帮助,它具有相应的功能,例如 glm::unProject() 以及反转矩阵和执行所有其他转换的功能你需要。

关于c++ - 如何检查一个点是否在透视投影的四边形内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17858326/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com