これも,以前書いたもの
drawKoch <- function(a.x, a.y, b.x, b.y, n)
{
c.x <- (2*a.x+b.x)/3
c.y <- (2*a.y+b.y)/3
d.x <- (a.x+2*b.x)/3
d.y <- (a.y+2*b.y)/3
x <- b.x-a.x
y <- a.y-b.y
d <- sqrt(x^2+y^2)/sqrt(3)
if (x >= 0) {
a1 <- atan(y/x)+pi/6
e.x <- a.x+d*cos(a1)
e.y <- a.y-d*sin(a1)
}
else {
a2 <- atan(y/x)-pi/6
e.x <- b.x+d*cos(a2)
e.y <- b.y-d*sin(a2)
}
if (n <= 0) {
lines(c(a.x, c.x, e.x, d.x, b.x), c(a.y, c.y, e.y, d.y, b.y), col="red")
}
else {
drawKoch(a.x, a.y, c.x, c.y, n-1)
drawKoch(c.x, c.y, e.x, e.y, n-1)
drawKoch(e.x, e.y, d.x, d.y, n-1)
drawKoch(d.x, d.y, b.x, b.y, n-1)
}
}
plot(c(50, 450), c(70, 428), type="n", axes=FALSE, xlab="", ylab="", asp=1)
r <- 180
ox <- oy <- 250
p.x <- r*cos(pi*(3/6))+ox
p.y <- r*sin(pi*(3/6))+oy
q.x <- r*cos(pi*(7/6))+ox
q.y <- r*sin(pi*(7/6))+oy
r.x <- r*cos(pi*(11/6))+ox
r.y <- r*sin(pi*(11/6))+oy
n <- 7
drawKoch(p.x, p.y, q.x, q.y, n)
drawKoch(q.x, q.y, r.x, r.y, n)
drawKoch(r.x, r.y, p.x, p.y, n)
grid(40)
points(c(p.x, q.x, r.x), c(p.y, q.y, r.y))
描画結果
最新の画像[もっと見る]
- さぬきうどん 山よし 佐文店 12時間前
- さぬきうどん 山よし 佐文店 12時間前
- 算額(その1394) 23時間前
- 算額(その1393) 1日前
- 和算の心(その008) 1日前
- ぶっかけうどん はな庄 2日前
- ぶっかけうどん はな庄 2日前
- 晴屋製麺所 2日前
- 晴屋製麺所 2日前
- 算額(その1391) 3日前
※コメント投稿者のブログIDはブログ作成者のみに通知されます