在给定法向量的 3D 空间中的 2D 磁盘上生成随机点



有没有一种简单有效的方法可以在三维空间中"悬挂"的磁盘上生成随机(均匀分布)的点?磁盘由其正常定义。

理想情况下,我想避免使用轮换矩阵,因为我不完全理解它们,而且我知道它们有问题。

到目前为止,我已经尝试生成一个 3D 单位向量并将其投影到磁盘的平面上,这确实可以确保点在磁盘内,但不能确保它是均匀分布的。 我还尝试根据其长度的某些函数缩放生成的向量,但无论如何我都无法获得均匀分布。

我有一个想法,涉及创建 2 个彼此垂直且垂直于法线的向量,以定义局部坐标系。然后,我可以像 2D 一样在单位圆盘上生成一个点,并将结果转换回全局坐标系。这似乎非常有效,因为它涉及一些预计算(我完全没问题)和之后的简单计算(这是针对光线追踪器的,所以会发生很多)。问题是,我不知道如何可靠地计算局部坐标系的基础向量,同时避免可能的共线性等问题。

任何帮助都非常感谢。

计算正交基向量 u, v 对于具有正常 n = (a,b,c) 的平面,一种简单的方法是找到绝对值最小的分量,并使 u 与该分量正交; 其余的几乎随之而来。例如,如果第一个分量是绝对值最小的分量,则可以选择以下基向量:

u = (0, -c, b)                //  n·u = -bc+cb = 0
v = (b²+c², -ab, -ac)         //  n·v = ab²+ac²-ab²-ac² = 0, u·v = abc-abc = 0

相关内容

  • 没有找到相关文章

最新更新