Taglibro de H
http://ito-hi.blog.so-net.ne.jp/2009-11-05
ついでにスピログラフのプログラムを while などを使わずに書いてみる。
ずいぶん短くなるし,描画もあっという間であるけれど。
while で描く方が,とろとろ描いていておもしろいのだけど(笑)。
spirograph <- function(
gr, # 外円の半径
sr, # 内円の半径
pr, # 内円内のペンの位置
accuracy=100, # 描画精度
col = "black", # 描画色
lwd = 1) # 描画線幅
{
gcd <- function(a, b) {
r <- a %% b
return(ifelse(r == 0, b, gcd(b, r)))
}
gr <- trunc(gr)
sr <- trunc(sr)
pr <- trunc(pr)
if (gr <= 0 | sr <= 0 | pr <= 0) {
stop("Parameters must be postive.")
}
theta0 <- seq(0, 2*pi*sr/gcd(gr, sr), length=accuracy*sr/gcd(gr, sr))
theta1 <- theta0*(gr/sr)
x <- (gr-sr)*sin(theta0)-pr*sin(theta1)
y <- (sr-gr)*cos(theta0)-pr*cos(theta1)
old <- par(mar=c(0, 0, 0, 0))
plot(x, y, type="n", axes=FALSE, xlab="", ylab="", asp=1)
lines(x, y, lwd=lwd, col=col)
par(old)
}
layout(matrix(1:4, 2))
spirograph(150, 108, 60)
spirograph(72, 552, 600, lwd = 3)
spirograph(11, 30, 45, col="red")
spirograph(15*29, 15*23, 50)
layout(1)
描画結果
最新の画像[もっと見る]
- 算額(その1582) 6分前
- 算額(その1581) 41分前
- 算額(その1580) 11時間前
- 算額(その1579) 14時間前
- 算額(その1578) 2日前
- 算額(その1578) 2日前
- 手打ちうどん 三徳 2日前
- 手打ちうどん 三徳 2日前
- 算額(その1577) 2日前
- 算額(その1576) 2日前