gpt4 book ai didi

c++ - OpenGL:如何计算我的鼠标在 3d 空间中指向的角度?

转载 作者:行者123 更新时间:2023-11-30 01:31:16 24 4
gpt4 key购买 nike

我只需要知道我的光标指向哪个角度(x,y,z vector )。所以我可以朝我指向的方向发射任何粒子。

我不能使用深度测试,所以典型的采摘方法不是一种选择。

仅用纯数学这可能吗?如果我知道视口(viewport)纵横比和视角等?

编辑:我需要从空场景中获取坐标。完全是空的,根本没有绘图!

最佳答案

如果您认为您的整个场景适合金字塔,并且您的眼睛在顶部(朝底部看),则您的屏幕是平行于底部的横截面,整个场景被投影到(二维)空间)。据推测,您知道屏幕的尺寸以及光标在 2D 空间中的位置。

您可以从 X 侧看那个金字塔,然后再从 Y 侧看,将问题变成两个直角三角形。三角形的底由“眼睛”到屏幕中心的连线定义,斜边由“眼睛”到光标的连线定义。

将光标放在 2D 显示的极端角上,您就知道角度(给定透视信息),因此您可以确定“眼睛”与 2D 投影平面的距离(或您的底座的长度)三角形),以像素为单位。使用该长度和三角形另一边的长度(光标的 x 或 y 坐标),您可以确定角度。所有这些都使用基本的触发。

如果有帮助,画出所有有问题的三角形:

  • (0, 0)定义的三角形; (基数,0)(base, Y_MAX) 其中 Y_MAX 是光标的最大值(屏幕的上边缘)。 base = Y/tan(max_angle)
  • (0, 0)定义的三角形; (基数,0)(基数,X_MAX)
  • (0, 0)定义的三角形; (基数,0)(base, Y),其中 Y 是光标的 y 位置。 角度 = (tan^(-1))(Y/base)
  • (0, 0)定义的三角形; (基数,0)(基数,X)

关于c++ - OpenGL:如何计算我的鼠标在 3d 空间中指向的角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3344717/

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