如何在R中画一个小圆圈
这是一个圆形正方形的代码,我想知道它是否能得到一个类似于方拱的图形。如何在R中画一个小圆圈,r,geometry-surface,R,Geometry Surface,这是一个圆形正方形的代码,我想知道它是否能得到一个类似于方拱的图形。 缔约国指出: 尽管构造一个圆形的正方形可能在概念上和物理上都很复杂 更简单的是,squircle具有更简单的方程,并且可以推广 更容易 { x这里是一个基本的Rsquircle函数。 我相信这些论点是自我描述的 x0,y0-中心坐标 半径-斜交半径 n-要计算的点数,默认值1000应使波形平滑 …-要传递到行的更多参数。请参阅帮助('par') 现在是函数和简单测试 squircle <- function(x0 = 0
缔约国指出: 尽管构造一个圆形的正方形可能在概念上和物理上都很复杂 更简单的是,squircle具有更简单的方程,并且可以推广 更容易
{
x这里是一个基本的Rsquircle
函数。
我相信这些论点是自我描述的
x0
,y0
-中心坐标
半径
-斜交半径
n
-要计算的点数,默认值1000
应使波形平滑
…
-要传递到行的更多参数
。请参阅帮助('par')
现在是函数和简单测试
squircle <- function(x0 = 0, y0 = 0, radius, n = 1000, ...){
r <- function(radius, theta){
radius/(1 - sin(2*theta)^2/2)^(1/4)
}
angle <- seq(0, 2*pi, length.out = n)
rvec <- r(radius, angle)
x <- rvec*cos(angle) + x0
y <- rvec*sin(angle) + y0
lines(x, y, ...)
}
plot(-5:5, -5:5, type = "n")
squircle(0, 0, 2, col = "red")
squircle(1, 1, 2, col = "blue", lty = "dashed")
是您自己做这件事的原因,看看您的代码是否可以简化
如果不是这样,一种可能是使用grid
包中的函数grid.roundrect
他们的帮助页面?grid::grid.roundrect
中采用的一个示例是
grid.roundrect(width=.5, height=.5, name="rr", gp = gpar(fill = "red"))
很好,我不知道。我发现写r(圆角半径)不太好units@Ferroao如果修改指数,它将不再是一个倒圆,而是一个超椭圆。
# squircleFG: Manuel Fernandez-Guasti (1992)
squircleFG <- function(x0 = 0, y0 = 0, radius, s, n = 1000, ...){
angle <- seq(0, 2*pi, length.out = n)
cosa <- cos(angle)
sina <- sin(angle)
sin2a <- sin(2*angle)
k <- sqrt(1 - sqrt(1 - s^2*sin2a^2))
x <- k*radius*sign(cosa)/(sqrt(2)*s*abs(sina)) + x0
y <- k*radius*sign(sina)/(sqrt(2)*s*abs(cosa)) + y0
lines(x[-n], y[-n], ...)
}
plot(-5:5, -5:5, type = "n")
squircleFG(0, 0, 2, s = 0.75, col = "red")
squircleFG(1, 1, 2, s = 0.75, col = "blue", lty = "dashed")
grid.roundrect(width=.5, height=.5, name="rr", gp = gpar(fill = "red"))