gpt4 book ai didi

algorithm - 角度遮挡算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:17 24 4
gpt4 key购买 nike

我有两个向量形成一个特定的角度,表示什么是“可见的”,在下图中表示为蓝色角度。

红色的角度表示阻挡入射光的“遮挡角”。

我需要有效地计算紫色角,它表示可见光相对于遮挡角的百分比,这会创建四种可能的情况,描述为部分遮挡(一侧或两侧)、完全遮挡或完全没有遮挡。

我没能找到一个有效的算法来完成这个非常具体的任务,考虑到蓝色角度可能与 PI 一样大,但遮挡角可能高达 2PI,放置在圆圈内的任何地方

enter image description here

编辑:两个角度均由 4 个归一化向量指定,完全不需要使用角度,因为我只需要知道蓝色向量之间的面积/角度有多少百分比被红色向量遮挡

最佳答案

要确定角段是否相交和相交类型,您可以使用我的答案中描述的方法 here

a1和a2是第一个扇形的端点,b1和b2是第二个扇形的端点,ma和mb是平分线,da和db是半角:

da = (a2 - a1)/ 2  
db = (b2 - b1)/ 2
ma = (a2 + a1)/ 2
mb = (b2 + b1)/ 2
cda = Cos(da)
cdb = Cos(db)

要检查是否存在交集以及发生什么样的交集,找到 4 个 bool 值

 BStartInsideA = (Cos(ma - b1) >= cda)
BEndInsideA = (Cos(ma - b2) >= cda)
AStartInsideB = (Cos(mb - a1) >= cdb)
AEndInsideB = (Cos(mb - a2) >= cdb)

链接的答案还讨论了奇怪定义的弧的规范化问题(可能对您的情况不重要)和获取表征交集类型的二进制代码(重要 - 在您的情况下它被排除在间隔之外)

关于algorithm - 角度遮挡算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41227335/

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