gpt4 book ai didi

c# - 相机与物体矢量相交的角度

转载 作者:行者123 更新时间:2023-11-30 15:51:17 25 4
gpt4 key购买 nike

我正在尝试确定相机前向矢量与对象矢量相交的角度。

抱歉,以我的知识无法直截了本地解释,请看附图:相机可能没有直视物体(OBJ),我想知道角度(图中的?)相机的前向矢量(红色的 V1)与物体的矢量(红色的 V2)相交(如果相交),例如点 A、B 或 C 等,具体取决于相机的 x 轴旋转。

diagram

我尝试计算红线 v1 和 v2 的归一化向量。然后计算两个向量之间的夹角https://onlinemschool.com/math/library/vector/angl/但测试时结果与预期值不符。

//v1
Vector3 hypoth = Camera.main.transform.forward.normalized;
//v2
Vector3 adjacent = (new Vector3(obj.transform.position.x, obj.transform.position.y, Camera.main.transform.position.z)
-obj.transform.position).normalized;

float dotProd = Vector3.Dot(adjacent, hypoth);
float cosOfAngle = dotProd / (Vector3.Magnitude(adjacent) * Vector3.Magnitude(hypoth));
double radAngle = Math.Acos(cosOfAngle);
float angle = (float)((180 / Math.PI) * radAngle);

最佳答案

找到 v1v2 之间的角度给你这个角度,它与你在图表中标记的不匹配:

what your code is calculating

相反,求解 v1 和垂直于 v2 的平面之间的角度:

diagram explaining why this works

我们可以通过使用 Vector3.ProjectOnPlane 将 v1 投影到垂直于 v2 的平面来统一执行此操作,然后使用 Vector3.Angle 找到该投影与 v1 之间的角度:

Vector3 projection = Vector3.ProjectOnPlane(hypoth, adjacent); 
float angle = Vector3.Angle(projection, hypoth);

关于c# - 相机与物体矢量相交的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57616219/

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