生成与点等距的向量

Generate vectors equidistant from a point

本文关键字:向量      更新时间:2023-10-16

我正在尝试生成距离屏幕中心点等距的向量。

以前,我遵循下面的方法1. 生成x, y和z的随机(0-400,0+400)
2. 归一化向量
3.缩放到任意距离

然而,这是原点为0时的情况。现在,我必须从屏幕中央做这样的事情。我试着用下面的方法,由于某种原因,这只给我x和y在正象限(z出来是好的)

//Origin (midpointX of screen, midPointY of screen,  z=0)
//vector<Vec3f> positions;
//positions.push_back(getPoint().scale(300);
getPoint{
Vec3f rVector;
rVector.set( Random(midPointX-100,midPointX+100), Random(midPointY-100,midPointY+100), Random(0-100,0+100)    );
}

假设所有这些点都在某半径的球面上。因此,它们与中心(x,y,z)的距离相等。如果能找到更好的方法来生成这些点,那就太好了。

你关心角度的概率分布吗?通过在立方体中生成均匀分布的随机点,您将倾向于立方体角的方向。这显然不同于对球体表面上的随机点进行采样。

如果你想要一个均匀分布的球面表面,尝试例如球体点拾取(基本上,独立生成角度,而不是x-y-z坐标)

至于将球体从原点移动到另一个点,这只是在最终结果(从极坐标计算的x-y-z坐标)中添加常量的问题,正如其他人指出的那样。