Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将三维激光雷达点从笛卡尔坐标系转换为球坐标系和赤平投影_R_Geometry_Coordinate Transformation_Lidar - Fatal编程技术网

R 将三维激光雷达点从笛卡尔坐标系转换为球坐标系和赤平投影

R 将三维激光雷达点从笛卡尔坐标系转换为球坐标系和赤平投影,r,geometry,coordinate-transformation,lidar,R,Geometry,Coordinate Transformation,Lidar,我正在写我的硕士论文,用激光雷达数据模拟半球形照片。因此,我的主要目标是将笛卡尔坐标系中的3D点(X,Y,Z)投影到赤平投影(参见图1,from:)。我的点云的坐标系经过变换,使中心点位于a(0,0,0)且所有z值均为正值 我在RStudio中编码,我首先尝试通过使用上面列出的笛卡尔坐标到球面坐标的公式来实现点云的球面投影 r这个结果很难在3D中显示,但我会尽力的 假设我们有一组十字形状的点悬挂在相机上方,与地面平行: x高分辨率。看起来你的点都在y-z平面上(尽管很难用这张特殊的图像来分辨)

我正在写我的硕士论文,用激光雷达数据模拟半球形照片。因此,我的主要目标是将笛卡尔坐标系中的3D点(X,Y,Z)投影到赤平投影(参见图1,from:)。我的点云的坐标系经过变换,使中心点位于a(0,0,0)且所有z值均为正值

我在RStudio中编码,我首先尝试通过使用上面列出的笛卡尔坐标到球面坐标的公式来实现点云的球面投影


r这个结果很难在3D中显示,但我会尽力的

假设我们有一组十字形状的点悬挂在相机上方,与地面平行:


x高分辨率。看起来你的点都在y-z平面上(尽管很难用这张特殊的图像来分辨)。你确定变换后的变量在此平面上不正确吗?嘿,点沿x-z平面定向,x零点将点云分成两半。但在我的结果中,我仍然看不到任何类似球面的变换。如果我理解的话,你将场景投影到一个半球上,然后通过立体摄影将后者投影到一个平面上。你在图片2(别名4)上向我们展示了什么?为什么你提到了球面投影并展示了球面坐标的转换公式?嘿,伊夫,谢谢你的回答。我想先将我的局部点从carthesian坐标系投影到球面半平面上,然后再投影到赤平二维平面上(如图1所示)。我不需要转换成球坐标才能这样做吗?@Radde1683请查看我的更新,以了解在rglHey Allan中应该可以工作的实现,非常感谢您的回答!该函数在我的点云上工作,因此它将点投影到半球上。利用赤平投影公式,我可以在二维平面上投影半球:X'=X/1+z,Y'=Y/1+z(X,Y,z)。还有一个问题:你的函数定义了半球的半径吗?如果没有,是否可以为“球面”坐标定义一个半径?@Radde1683是的,半径设置为pi/2。我已经更新了函数,使半球半径为1。如果您能够将点云作为问题的补充,我很想看到您从点云中获得的结果图像。谢谢
r     <- sqrt(x^2 + y^2  + z^2)
theta <- acos(z/r)
phi   <- atan2(y,x)
x2 <- (x / (1 + z))
y2 <- (y / (1 + z))
project_2d <- data.frame(x2, y2)
df <- projection(x, y, z)
plot3d(df$x, df$y, df$z, zlim = c(0, pi))