我有一个法 vector N
,它定义了半球的上半部分和一个函数,它在半球上创建随机点 P
。
现在我想知道随机选择的点是否在上半部分。是否可以假设,如果 N+P
的长度大于或等于 1,则 P
位于上半部分,或者是否有更好的计算方法glm
?
最佳答案
@Raxvan 给出了如何正确执行的完全有效的答案:使用 dot product并检查它是否为正(非负)。
回答您在评论中也重申的最初想法:
if the length of
N+P
is greater or equal 1,P
is on the upper half
这是一种错误的方式。是的,此测试对所有正确的点返回“真”,但不会过滤掉所有不正确的点。例如,考虑 N
是 (0,0,1)
(即沿 Z 轴的 vector )并且 P
是 (0.99 , 0, -0.14)
(即一个 vector ,略低于 XY 平面,位于 X 轴的远端)。显然P
不在“上半球”但是N + P
是(0.99, 0, 0.86)
而且它的长度明显大于1.
关于c++ - 半球上半部分的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689564/