gpt4 book ai didi

r - 如何绘制联锁环?

转载 作者:行者123 更新时间:2023-12-04 12:17:11 26 4
gpt4 key购买 nike

如何在 R 中绘制互锁环面,如 this page for gnuplot 所示:

interlocking tori

我在 R 中尝试了以下代码,但它们不起作用:

try_tori_1 = function(){
library(rgl)
xvec= yvec = seq(-pi,pi,by=0.1);
z <- outer(xvec,yvec,function(x,y) {sin(x)+.5*sin(x)*cos(y)} )
persp3d(z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")
z <- outer(xvec,yvec,function(x,y) {cos(x)+.5*cos(x)*cos(y)} )
persp3d(z, theta = 30, phi = 30, expand = 0.5, col = "lightblue", add=T)
z <- outer(xvec,yvec,function(x,y) {.5*sin(y)} )
persp3d(z, theta = 30, phi = 30, expand = 0.5, col = "lightblue", add=T)
z <- outer(xvec,yvec,function(x,y) {1+cos(x)+.5*cos(x)*cos(y)} )
persp3d(z, theta = 30, phi = 30, expand = 0.5, col = "lightblue", add=T)
z <- outer(xvec,yvec,function(x,y) {.5*sin(y)} )
persp3d(z, theta = 30, phi = 30, expand = 0.5, col = "lightblue", add=T)
z <- outer(xvec,yvec,function(x,y) {sin(x)+.5*sin(x)*cos(y)} )
persp3d(z, theta = 30, phi = 30, expand = 0.5, col = "lightblue", add=T)
}

try_tori_2 = function(){
library(rgl)
u= v = seq(-pi,pi,by=0.1);
plot3d(cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v))
plot3d(1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v))
}

最佳答案

我的回答是基于这两个网站的例子:

你是这样做的:

library(plot3D)
x <- seq(-pi,pi,by=0.1)
y <- seq(-pi,pi,by=0.1)
R = 1.0
r = 0.5
M <- mesh(x, y)
alpha <- M$x
beta <- M$y
surf3D(x = (R + r*cos(alpha)) * cos(beta),
y = (R + r*cos(alpha)) * sin(beta),
z = r * sin(alpha),
col="blue", colkey=FALSE, alpha = 0.3, border="black",
xlim=c(-0.5*pi,0.5*pi), ylim=c(-0.5*pi,0.5*pi), zlim=c(-0.5*pi,0.5*pi))
surf3D(x = R + cos(alpha) + r*cos(alpha) * cos(beta),
y = r*sin(beta),
z = sin(alpha)+ r * sin(alpha) * cos(beta),
col="red", colkey=FALSE, alpha = 0.3, border="black", add=T)

生成此图:

interlocking tori

需要注意的重要事项是:

  • 使用 surf3D 功能
  • 使用 mesh
  • 设置角度
  • 要查看所有内容,请在第一个绘图中指定范围(xlim 等)
  • 使用颜色和 alpha 进行绘图以获得您想要的颜色

关于r - 如何绘制联锁环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23799196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com