rgl中的线路连接问题

问题描述 投票:0回答:1

使用 rgl 时,我试图在 3D 空间中绘制平滑的线条。在某些视角下,线条平滑地连接在一起;在其他视角下,它们看起来完全脱节。

例如用

3dlines
画出如下:

x = c(-32.76755,-32.84534,-32.90371,-32.94217,-32.96003,-32.95662,-33.04784,-33.03502,-32.98490,-32.86505,-32.79418,-32.59470,-32.52399,-32.44813,-32.23378,-32.18913)
y = c(13.15037,12.38736,11.65954,10.9627,10.29022,9.6338,8.67939,7.70395,7.04928,6.05184,5.37749,4.35355,3.64888,2.92609,1.86025,1.11037)
z = c(1.54869,2.22778,2.94911,3.70456,4.48397,5.27592,5.11489,4.94259,5.70322,5.48567,6.18623,5.90521,6.53304,7.12764,6.74987,7.29049)

线宽为

10

lines3d(x=x, y=y, z=z, lwd=10)

这个角度,还可以:

par3d(userMatrix = matrix(data = c(0.7643722, -0.0511867, -0.6427402, 0, -0.5819589, 0.3744012, -0.7219055, 0, 0.2775946, 0.9258529, 0.2563933, 0, 0, 0, 0, 1), nrow=4, ncol=4))

Correct line join

但是在这里,线条之间的连接存在问题:

par3d(userMatrix = matrix(data = c(0.85497350, -0.02970354, -0.51782036, 0, -0.4698080, 0.3786791, -0.7974223, 0, 0.2197740, 0.9250512, 0.3098056, 0, 0, 0, 0, 1), nrow=4, ncol=4))

Incorrect line joins

这只是 rgl 的限制,还是我在这里缺少设置?

r 3d rgl
1个回答
0
投票

这是 OpenGL 的一个更深层次的问题:OpenGL GL_LINES endpoints not joining

Base-R 有一个图形参数,可以为线段添加圆角

rgl
不存在,但在交叉点添加点是填补空白的一种(hacky)方法...

lines3d(x=x, y=y, z=z, lwd=10)
points3d(x=x, y=y, z=z, size=10, point_antialias = TRUE)

point_antialias = TRUE
应该使点显示为圆形而不是正方形,这会更漂亮,但取决于设备;对我目前使用的机器没有任何影响,所以如果你仔细观察,你可以看到广场的角落。不过,我认为这是一个进步。

(我没有使用你的确切

par3d()
...)

© www.soinside.com 2019 - 2024. All rights reserved.