c++ - 半球上半部分的 vector

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

我有一个法 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/

相关文章:

C++0x : Range overloads for standard algorithms?

c++ - 链表拷贝构造函数C++

javascript - 使用 MathJax 的所见即所得数学方程编辑器

javascript - 在 jquery 中使用边距和宽度进行数学运算

java - 在 vector 图像中创建 QR 码

C++ Friend 方法无法从类访问私有(private)数据

c++ - 通过具有重载运算符函数的构造函数进行自动类型转换

math - 如何将 atan2() 与其他弧度角系统结合使用

javascript - 关于SVG(可缩放矢量图形)的几个问题

c++ - 绘制具有给定双坐标的图形