首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >旋转一个xyz点云以适应R中的xy平面

旋转一个xyz点云以适应R中的xy平面
EN

Stack Overflow用户
提问于 2022-01-13 15:05:15
回答 1查看 214关注 0票数 1

我使用R并试图计算给定点云的回归平面,并旋转点云(和回归平面),使其与xy平面对齐。我设法使用lm()函数来拟合点云中的线性平面(见下面的图像),但我仍然坚持使用输出(系数?)计算点云与xy平面对齐所需的旋转。

我查看了旋转矩阵(我认为我需要),但是从lm()计算出的系数到这样一个矩阵的数学运算超出了我的能力。有人能在我路上帮我吗?还是有更简单的方法使点云与xy平面对齐?

提前感谢!

编辑:

这就是我目前所拥有的(有一个强烈减少的点云)

代码语言:javascript
复制
library(stats)
library(rgl)

test_pc <- data.frame(x = c(-13.237859,-24.852585,-15.430247,-1.503417,-11.97386,-16.003471,-24.604477,-22.399782,-6.105618,-20.054321,-23.751991,-19.948997,-23.001833,-7.849604,-18.049824,-3.800245,-15.693258,-18.56345), 
y = c(-29.660378,-9.196059,-16.974348,-34.623558,-25.25021,-21.308338,-14.051781,-27.175217,-35.1679,-14.564184,-23.321609,-23.961811,-19.686213,-26.698538,-30.610306,-31.007727,-25.055323,-18.545834), 
z = c(-31.4743,-33.636326,-33.938457,-33.12648,-32.718159,-32.621037,-32.157677,-29.278849,-31.54184,-33.30085,-29.605991,-30.708748,-30.841011,-33.205978,-30.3218,-33.0793,-31.904222,-32.556953))

test_rp = lm(test_pc$z ~ test_pc$x + test_pc$y)

plot3d(test_pc$x,test_pc$y,test_pc$z, type="s", rad=0.1)
planes3d(test_rp$coef[2], test_rp$coef[3], -1, test_rp$coef[1], col = 4, alpha = 0.3)

回归平面很好地符合点云:

现在,我想以这样的方式旋转数据,使数据的回归平面对齐(与xy平面平行运行)。

EN

回答 1

Stack Overflow用户

发布于 2022-01-19 13:49:13

在计算Morpho包中的rotaxis3d()函数时,我无意中意外地发现了另一个函数,它恰好实现了我在一次访问中所寻找的功能: pcAlign(),它通过其主轴对齐一个(或两个)3D点云/网格:

https://rdrr.io/cran/Morpho/man/pcAlign.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70698752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档