是否有一种简单而有效的方法可以在三维空间中“悬挂”的磁盘上生成随机(均匀分布)点?磁盘由其正常定义。
理想情况下,我想避免旋转矩阵,因为我不完全理解它们,我知道它们有问题。
到目前为止,我已经尝试生成一个3D单位矢量并将其投影到磁盘平面上,这确保了该点在磁盘内,但不是它均匀分布。 我还尝试根据其长度的某些函数来缩放生成的向量,但无论如何我都无法获得统一的分布。
我有一个想法,涉及创建彼此垂直的2个向量和法线,以定义局部坐标系。然后,我可以像在2D中一样在单位磁盘上生成一个点,并将结果转换回全局坐标系。这似乎是非常有效的,因为它涉及一些预计算(我完全没有)并且之后只有简单的计算(这是光线跟踪器,所以它会发生很多)。问题是,我不知道如何可靠地计算局部坐标系的基矢量,同时避免共线性等可能出现的问题。
非常感谢任何帮助。
答案 0 :(得分:5)
为正常n =(a,b,c)的平面计算正交基矢量u,v的简单方法是找到具有最小绝对值的分量,并使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