【问题标题】:How can I import and plot a triangular mesh in R?如何在 R 中导入和绘制三角形网格?
【发布时间】:2015-04-07 22:11:14
【问题描述】:

我想在 R 中绘制我的模型输出

它是格式为三角形的网格

x1 y1 z1 x2 y2 z2 x3 y3 z3 value

每行代表一个三角形,我想以value为比例绘制这些三角形。

mymesh <- structure(c(0.91, 0.45, 13.93, 14.26, 14.15, 14.36, 14.36, 14.61, 
    14.58, 14.87, 14.8, 15.13, 15.02, 15.39, 15.24, 15.65, 15.46, 
    15.9, 15.69, 16.16, 0, 0.79, 12.45, 12.64, 12.34, 12.46, 12.24, 
    12.38, 12.13, 12.3, 12.03, 12.22, 11.92, 12.13, 11.81, 12.04, 
    11.69, 11.94, 11.57, 11.84, 0, 0, 208.71, 208.69, 210.7, 210.68, 
    212.68, 212.66, 214.67, 214.65, 216.66, 216.63, 218.64, 218.61, 
    220.62, 220.59, 222.61, 222.57, 224.59, 224.56, 0.45, 1.5, 14.15, 
    14.15, 14.36, 14.36, 14.58, 14.58, 14.8, 14.8, 15.02, 15.02, 
    15.24, 15.24, 15.46, 15.46, 15.69, 15.69, 15.92, 15.92, 0.79, 
    0, 12.34, 12.34, 12.24, 12.24, 12.13, 12.13, 12.03, 12.03, 11.92, 
    11.92, 11.81, 11.81, 11.69, 11.69, 11.57, 11.57, 11.45, 11.45, 
    0, 131.83, 210.7, 210.7, 212.68, 212.68, 214.67, 214.67, 216.66, 
    216.66, 218.64, 218.64, 220.62, 220.62, 222.61, 222.61, 224.59, 
    224.59, 226.58, 226.58, 1.5, 0.75, 14.26, 14.36, 14.36, 14.61, 
    14.61, 14.87, 14.87, 15.13, 15.13, 15.39, 15.39, 15.65, 15.65, 
    15.9, 15.9, 16.16, 16.16, 16.42, 0, 1.3, 12.64, 12.46, 12.46, 
    12.38, 12.38, 12.3, 12.3, 12.22, 12.22, 12.13, 12.13, 12.04, 
    12.04, 11.94, 11.94, 11.84, 11.84, 11.74, 131.83, 131.83, 208.69, 
    210.68, 210.68, 212.66, 212.66, 214.65, 214.65, 216.63, 216.63, 
    218.61, 218.61, 220.59, 220.59, 222.57, 222.57, 224.56, 224.56, 
    226.54, 375.12, 399.8, 297.84, 497.63, 368.17, 1113.19, 979, 
    781.41, 1202.21, 1113.94, 1293.77, 1391.94, 1364.52, 1151.37, 
    1690.98, 913.63, 0, 0, 0, 0), .Dim = c(20L, 10L), .Dimnames = list(
    NULL, c("x1", "y1", "z1", "x2", "y2", "z2", "x3", "y3", "z3", 
    "value")))

我查看了rglplot3Dmisc3d 包。但是,这些似乎处理的是点而不是三角形(例如,rgl.pointsrgl.linestripsrgl.triangles 函数都将 x,y,z 作为输入,而不是三角形)。

如何使用 R 绘制此数据集中的三角形并为其着色?

【问题讨论】:

  • 你试过rgl::triangles3d吗?它的帮助页面 (?triangles3d) 包含一个很好的示例。在我看来(如果这是你所追求的)你唯一的任务就是将你的数据重塑为适当格式的 3 列矩阵。
  • @JoshO'Brien 感谢您指出这一点。我在查找文档时遇到了麻烦,并且无法弄清楚如何在三角形的顶点上使用参数 x y z ......尤其是没有某种组件点的标识符......但显然,triangle3d“需要每个连续的三倍点作为三角形的顶点”。而且我还偶然发现了 light3d 函数,它也可能是一个有用的工具。
  • 你试过我的建议了吗?是不是如你所愿?

标签: r opengl graphics 3d mesh


【解决方案1】:

尝试使用polygon() 函数! :) 太棒了——你可以画出任何你想要的形状。 Base R 绘图有时实际上非常甜蜜。

(错误)

【讨论】:

【解决方案2】:

我使用来自rglshade3dtmesh3d 函数生成了一个绘图。 它创建了两个单独的条形图。不同的三角形有不同的颜色。看下面的图。

rgl.open()
i <- 1
vertices <- c(mymesh[i,1:3],1,mymesh[i,4:6],1,mymesh[i,7:9],1)
indices <- c( 1, 2, 3)
shade3d( tmesh3d(vertices,indices) , col=1)
bg3d(color = "white")
for(i in 2:20){
     vertices <- c(mymesh[i,1:3],1,mymesh[i,4:6],1,mymesh[i,7:9],1)
     indices <- c( 1, 2, 3)
     shade3d( tmesh3d(vertices,indices) , col= i)
    }

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 2016-07-17
    • 2017-12-15
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多