假设我有一个单位向量a =向量(0,1,0),我想在x =向量(-0.2,0,-0.2)和y =向量(0.2, 0,0.2),我该怎么做呢?
如果我只想在x和y之间生成一个随机向量,我会在一个正方形的边界内得到一个值:
我想要的是由x和y组成的圆圈内的值:
这似乎是一个简单的问题,但我现在无法找到解决方案。任何帮助将不胜感激。
(我没有在mathoverflow上问这个,因为这不是'研究水平的数学问题')
答案 0 :(得分:1)
如果我正确地阅读了你的问题,你想要一个在特定长度(圆的半径)内的随机方向的矢量。
圆的公式为: x 2 + y 2 = r 2
所以,如果你有一个最大半径, r ,这会限制向量长度,也许会这样做:
这样,您在 x 中获得随机方向,在 y 中获得随机方向,但矢量长度将保持在 0 之内 r 等将被限制在该半径的圆圈内。
在您的示例中,似乎 r 应为 sqrt(0.2 2 ),大约 0.28284
更新
因为3D矢量的长度(或幅度) sqrt(x 2 + y 2 + z 2 )你可以将技术扩展到3D,虽然我可能更喜欢不同的方法(也适用于2D)。