给定一个向量,是否有一种简单的方法可以将其指向可调的随机量,使其指向稍微不同的方向?例如,将其随机调整为0.1弧度或所有2pi弧度。随机调整组件并不能真正起作用。
我的计划是生成一个随机向量,将其与我的原始向量相乘,然后围绕该原始向量旋转一个随机量。那是一个不错的主意吗?
更清晰的描述:假设在原点有一个圆锥体,它的顶点指向向量的方向相同,并具有可配置的打开角度-我希望能够选择一个随机的向量,该向量从原点指向任何角度那个圆锥
答案 0 :(得分:1)
有一种显式生成垂直向量的方法。
查找具有最大和第二个量级的分量。
交换这些组件并否定最大的组件。使最小的分量为零。例如,如果对于向量V |y|>=|x|>=|z|
,则向量P=(-y, x, 0)
是垂直的(校验点积)。
要使任意垂直,还可以生成B = V x P
,对P
和B
进行规范化并进行组合
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 确认确定-我生成了一个与原始矢量不平行的随机单位矢量,将它们交叉积在一起以得到随机的旋转轴,然后然后将原始向量围绕该向量随机旋转。
我已经实现了它,并且看起来效果很好。