У меня есть данные для трехмерной сетчатой поверхности.Данные доступны здесь , где vb.xlsx содержит координаты для 7160 трехмерных вершин, а it.xlsx содержит информацию о лице.Файл color coding.txt представляет собой матрицу 7160 * 1 с элементами 1 или 2. Я хочу, чтобы площадь поверхности (а не только вершины!), Окруженная вершинами, которые закодированы 1, отображалась другим цветом по сравнению с областями, покрытыми вершинами.закодированный 2.
Например, если вершины, покрывающие нос и верхнюю губу, закодированы 1, а другие области лица закодированы 2, то я хочу построить график, как показано ниже:
, где площадь поверхности носа и верхней губы зеленая, а остальные области серые.
Мой код для создания серой сетки трехмерной поверхности лица выглядит следующим образом:
library(geomorph)
library(xlsx)
library(rgl)
# Import data
vb <- read.xlsx("E:\\...\\vb.xlsx", sheetIndex = 1, header = F)
it <- read.xlsx("E:\\...\\it.xlsx", sheetIndex = 1, header = F)
vb_mat <- t(as.matrix(vb))
vb_mat <- rbind(vb_mat, 1)
rownames(vb_mat) <- c("xpts", "ypts", "zpts", "")
it_mat <- t(as.matrix(it))
rownames(it_mat) <- NULL
vertices <- c(vb_mat)
indices <- c(it_mat)
try <- tmesh3d(vertices = vertices, indices = indices, homogeneous = TRUE, material = NULL,
normals = NULL, texcoords = NULL)
try2 <- addNormals(try)
shade3d(try2, col="darkgrey", specular = "#202020")
Теперь я хочу построить площадь поверхности, содержащую вершины с кодом 1 зеленого цвета, и область, содержащую вершины с кодом 2 розового цвета.Как мне изменить мой код R?
Спасибо.