随机修改3D向量

时间:2018-11-26 14:00:12

标签: 3d geometry

给定一个向量,是否有一种简单的方法可以将其指向可调的随机量,使其指向稍微不同的方向?例如,将其随机调整为0.1弧度或所有2pi弧度。随机调整组件并不能真正起作用。

我的计划是生成一个随机向量,将其与我的原始向量相乘,然后围绕该原始向量旋转一个随机量。那是一个不错的主意吗?

更清晰的描述:假设在原点有一个圆锥体,它的顶点指向向量的方向相同,并具有可配置的打开角度-我希望能够选择一个随机的向量,该向量从原点指向任何角度那个圆锥

2 个答案:

答案 0 :(得分:1)

有一种显式生成垂直向量的方法。

查找具有最大和第二个量级的分量。

交换这些组件并否定最大的组件。使最小的分量为零。例如,如果对于向量V |y|>=|x|>=|z|,则向量P=(-y, x, 0)是垂直的(校验点积)。

要使任意垂直,还可以生成B = V x P,对PB进行规范化并进行组合

 R = L * P * Cos(t) + L * B * Sin(t) 

其中t是范围0..2*Pi中的随机角,L是提供偏差角tan(fi) = L / |V|的长度

现在偏移的向量为(长度等于源一)。

D = (V + R) * |V|/|V+R|

如果fi在锥角范围内均匀,则分布不均匀。似乎下面的转换应提供均匀的分布:

 L = V * tan(Sqrt(random(0..1))*FiCone)

答案 1 :(得分:0)

似乎可行的简单解决方案,已通过 @meowgoesthedog 确认确定-我生成了一个与原始矢量不平行的随机单位矢量,将它们交叉积在一起以得到随机的旋转轴,然后然后将原始向量围绕该向量随机旋转。

我已经实现了它,并且看起来效果很好。