在半径r
的球体内有一个点云,这些点的坐标系位于球体的中心。这个想法是“拍摄”这个云的照片,因为球体表面有许多观点。 “摄像机”位置取决于角度θ(方位角)和phi(仰角),如图所示。我需要至少10000个图像或视点。
我怎么能处理这个?
我做过:
关注this link我已经将点投射到每个平面,因为我还需要在3D中对它们进行可视化。像这样:
所以我有投影点的坐标属于“照片”的平面,但仍然使用原始坐标系。
飞机的定义是:
U = {-sin(theta), cos(theta), 0}
V = {cos(theta)*sin(phi), sin(theta)*sin(phi), cos(phi)}
Center = {cos(theta)*cos(phi), sin(theta)*cos(phi), sin(phi)}*r
但我被阻止从3D传递到2D。
答案 0 :(得分:2)
每个点P
在平面自己的基础[U, V]
中的投影坐标由
[x', y'] = [dot(P - Center, U), dot(P - Center, V)]
要将其转换为世界坐标,只需执行
world_coord = Center + U * x' + V * y'
(如果我误解了你的问题,请告诉我)
答案 1 :(得分:0)
想象一下,屏幕的左下角为度(0,0),右下角为度(0,360),左上角为度(180,0),右上底度为(180,360)。 Theta将从0变为360,phi将从0变为180。您可以通过计算这些角度并将其写入像素作为具有所需rgb的点来投影点云数据。一些像素将具有多个点,原因是在相同角度下将存在具有不同长度的点。根据这些长度,您可以创建深度图。简要地说,您的坐标系将像theta和phi一样发生变化(深度图的长度是可选的)。