我想根据与顶点的接近程度为三角形 RGL 网格上的面着色。
问题是,似乎很多时候顶点与离实际顶点位置本身非常远的面相关联,当我想为一个顶点周围的面着色时会产生问题;这些面最终离重心的实际位置很远。
我现在正在做的是这样的:
计算网格中所有面的重心。
使用 FAR 包计算距离所需点最近的 n 个重心。保留这些索引。
根据收集到的指标,为这些面孔涂上某种颜色。其余的面孔将被涂成白色。
colors=rep('white',num_faces) colors[colored_faces]='red' mesh$material=list(color=colors)
- 然后我会绘制网格:
plot3d(mesh)
- 问题是,我现在的颜色很奇怪,是否有任何既定的方法可以为接近某个坐标/顶点的面着色?
这就是网格当前的样子,红色作为“彩色”面,蓝色作为我希望附近有彩色面的点。
更新:看到这个,我的问题现在已经修改为:
如何找到离给定点最近的人脸?我仍然不清楚,因为面部重心有时会产生误导,并且不代表到给定顶点的实际距离。
更新 2:
我在这里添加了示例代码和一个文件:文件和代码
基本上,代码使用最近邻算法找到与同一 3d 网格的给定顶点最近的面,然后我们在颜色向量中为这些面着色(记住为颜色着色 4 次):
除了,当我们运行这个算法时,我们只给形状的一侧着色:像这样: 奇数
如何使颜色更加对称?
更新3:这个问题已经解决了!请查看 Rforge 上未发布的 rgl 版本,以获取允许对面、顶点和边进行着色的 rgl 最新版本。
更新 4:这是通过为最近的顶点着色的新图像(以显示新的 rgl 包可以创造奇迹):