2012-12-30 21 views
0

我试图从屏幕中心的一个点等距离生成向量。从一个点等距离生成向量

以前,我是在按照以下方法 1.生成对于x,y和z
2.标准化矢量
3.量表他们随机数随机(0-400,0 + 400)到任何距离通缉

然而,这是当我的起源为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) ); 
} 

假设上的sirface上撒谎所有这些问题一个半径的球体。因此,这些距离中心(x,y,z)等距。知道更好的方法来产生这些点是很好的。
我很满意这个算法。

+3

将一个矢量从原点0移动到像屏幕中心那样的其他点是_translation_所做的。 –

回答

3

你关心角度的pdf(概率分布)吗?通过在立方体中生成均匀分布的随机点,您倾向于倾向立方体角落的方向。这与抽样球体表面上的随机点明显不同。

如果您想在球体表面上进行均匀分布,请尝试Sphere Point Picking(基本上,独立生成角度,而不是xyz坐标)

只要将球体从原点移动到不同的点,这只是将常数添加到最终结果(从极坐标计算的xyz坐标),正如其他人所指出的那样。