概要

本稿はRを学び始めたプログラマが残したメモ書きです。文系路線で生きてきたのでこの手のジャンルは不得手です。

5回目の今回は、円や多角形などの基本的な図形を描いてみました。

Rのバージョンは2.10.1。

@CretedDate 2012/05/11
@Env R2.10.1, Ubuntu10.04

sin / cos / tan

x <- seq(-pi, pi, length=100)
plot( sin(x) )
plot( cos(x) )
plot( tan(x) )

sin/cos/tan

2〜4次関数

# 2〜4次関数
x <- seq(-10, 10, length=100)
plot(x^2, type="l")
plot(x^3, type="l")
plot(x^4, type="l")

# -2〜-4次関数
plot(x^-2, type="l")
plot(x^-3, type="l")
plot(x^-4, type="l")

2〜4次関数

円 / 半円 / 楕円

plot.new()
plot.window(xlim=c(-1, 1), ylim=c(-1, 1))

# 円
x <- seq(-pi, pi, length=100)
lines(cos(x), sin(x))

# 楕円
lines(cos(x) * 0.7, sin(x))

# 半円(横)
x <- seq(0, pi, length=100)
lines(c(-1, cos(x)), c(0, sin(x)))

# 半円(縦)
x <- seq(-pi / 2, pi / 2, length=100)
lines(c(0, cos(x)), c(1, sin(x)))

円、楕円、半円(横)、半円(縦)

多角形

plot.new()
plot.window(xlim=c(-1, 1), ylim=c(-1, 1))

# 正三角形
x <- seq(-pi * 1.5, pi * 0.5, length=4)
lines(cos(x), sin(x))

# 五角形
x <- seq(-pi * 1.5, pi * 0.5, length=6)
lines(cos(x), sin(x))

# 六角形
x <- seq(-pi * 1.5, pi * 0.5, length=7)
lines(cos(x), sin(x))

# 五角形を天地逆にして重ねてみる
x <- seq(-pi * 1.5, pi * 0.5, length=6)
lines(cos(x), sin(x))
x <- seq(-pi * 0.5, pi * 1.5, length=6)
lines(cos(x), sin(x))

正三角形、正五角形、正六角形

花びら

plot.new()
plot.window(xlim=c(-3, 3), ylim=c(-3, 3))
x <- seq(-pi, pi, length=100)

# 5枚の花びら(cos(x), sin(x)の円を回りつつ、cos(x*4), sin(x*4)で5つ円を描く)
lines( cos(x) + cos(x*4), sin(x) - sin(x*4) )

# 花びらが重ならない様にズラしてみる
lines( 1.1*cos(x) + cos(x*4), 1.1*sin(x) - sin(x*4) )

# 7枚
lines( cos(x) + cos(x*6), sin(x) - sin(x*6) )

半ビラ

五芒星、六芒星

五芒星は正五角形を頂点から、1 - 3 - 5 - 2 - 4 - 1の順で線を引けば良いので、-pi〜piの指定を2倍にして頂点を5個にすれば描ける。六芒星は正三角形を天地逆で2つ描く。

plot.new()
plot.window(xlim=c(-1, 1), ylim=c(-1, 1))

# 五芒星
x <- seq(-pi * 1.5, pi * 2.5, length=6)
lines(cos(x), sin(x))

# 六芒星
x <- seq(-pi * 0.5, pi * 1.5, length=4)
lines(cos(x),  sin(x))
x <- seq(-pi * 1.5, pi * 0.5, length=4)
lines(cos(x), sin(x))

五芒星、六芒星

plot.new()
plot.window(xlim=c(-5, 5), ylim=c(-5, 5))

# 星の原型になる図形(これから良い感じの点を拾えば星になる)
x <- seq(-pi, pi, length=100)
lines( 2.5*cos(x) + cos(x*4), 2.5*sin(x) - sin(x*4) )

# 上の図形から11個点を結ぶと星になる
x <- seq(-pi, pi, length=11)
lines( 2.5*cos(x) + cos(x*4), 2.5*sin(x) - sin(x*4) )

# 傾いてるので微調整(おそらくもっと良い描き方がある)
x1 <- seq(pi * -0.025, 2 * pi + pi * -0.025, length=11)
x2 <- x1 + pi / 8
lines( 2.5*cos(x2) + cos(x1*4), 2.5*sin(x2) - sin(x1*4) )

星

# 正弦波
x <- seq(0, 4 * pi, length=100)
plot(sin(x) ^ 2, type="l", ylim=c(-2, 3))

# のこぎり波
x <- seq(-pi, pi, length=100)
plot( 2 * (x - floor(x)) - 1, type="l", ylim=c(-2, 3) )

# 矩形波的なもの
x <- seq(0, 8 * pi, length=1000)
plot (floor( sin(x)+1 ), type="l", ylim=c(-2, 3))

波