微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 R 中使用 PCA 绘制 3D 平面

如何解决在 R 中使用 PCA 绘制 3D 平面

我正在尝试计算表示 R 中动物足迹的 3D 网格的对称平面。

我已经运行了下面的脚本,但不幸的是它在我的情况下不起作用。没有错误消息,但只是没有在 rgl 窗口中绘制平面:

library(Rvcg)
library(rgl)

path_ply <- "/Volumes/eTrack/eTrack - Segmented 3D models"

filelist_ply1 <- list.files(path_ply,pattern = ".ply",full.names = TRUE)

i=1

filelist_ply1[i]

#Read 3D mesh (.ply)
Specimen <- vcgPlyRead(filelist_ply1[i],updatenormals = TRUE,clean = TRUE)

#Remove unwanted components
Specimen <- vcgIsolated(
Specimen,facenum = NULL,diameter = NULL,split = FALSE,keep = 1,silent = FALSE)

X <- t(Specimen$vb[1:3,])

#Demeaning the variables
mean_vec <- colMeans(X)

X_demeaned <- matrix(NA,ncol = 3,nrow = length(X[,1]))
X_demeaned[,1] <- X[,1]-mean_vec[1]
X_demeaned[,2] <- X[,2]-mean_vec[2]
X_demeaned[,3] <- X[,3]-mean_vec[3]

cov.X=cov(X_demeaned)
eigen_vectors <- eigen((cov.X))$vectors
eigen_values  <- eigen((cov.X))$values
eigen_vectors
eigen_values

a <- eigen_vectors[1,3]
b <- eigen_vectors[2,3]
c <- eigen_vectors[3,3]
d <- a * mean_vec[1] + b * mean_vec[2] + c * mean_vec[3]

open3d()
plot3d(X[,1],X[,2],3],type = "p",col = "red",size = 1)
rgl.planes(a,b,c,d,alpha=0.2,color = "#D95F02")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。