在半球的上半部分的传染媒介

时间:2018-02-08 15:52:52

标签: c++ math vector-graphics glm-math

我有一个法线向量N,它定义了一个半球的上半部分和一个函数,它在半球上创建了随机点P

现在我想知道,如果随机选择的点位于上半部分。是假设,如果N+P的长度大于或等于1,P位于上半部分,还是有更好的方法在glm计算?

1 个答案:

答案 0 :(得分:1)

@Raxvan给出了一个非常有效的答案:如何正确地做到:使用dot product并检查它是否为正(非负)。

回答您在评论中重申的原始想法:

  

如果N+P的长度大于或等于1,P位于上半部分

这是一种不正确的方式。是的,对于所有正确的点,此测试返回“true”,但它不会过滤掉所有不正确的点。例如,考虑N(0,0,1)(即沿Z轴的向量),P(0.99, 0, -0.14)(即一个位于XY平面下方的矢量,位于沿X轴的远端)。显然P不在“上半球”,但N + P(0.99, 0, 0.86),其长度显然大于1。