首页 > 解决方案 > 随机修改 3D 矢量

问题描述

给定一个向量,是否有一种简单的方法可以通过可调节的随机量来干扰它,使其指向稍微不同的方向?例如,随机调整 0.1 弧度,或所有高达 2pi 的弧度。随机调整组件并没有真正起作用。

我的计划是生成一个随机向量,与我的原始向量交叉乘积,然后将原始向量旋转一个随机量。这是个好主意吗?

更清晰的描述:想象有一个顶点在原点的圆锥,指向与矢量相同的方向,具有可配置的张角 - 我希望能够选择一个随机矢量,该矢量从原点指向该圆锥内的任何角度

标签: 3dgeometry

解决方案


有一种方法可以显式地生成垂直向量。

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

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

为了使任意垂直,生成也B = V x P,归一化PB组合

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

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

现在偏离向量是(长度等于源一)。

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

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

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

推荐阅读