VOYAGE GROUP エンジニアブログ

voyagegroup_techのブログ
VOYAGE GROUPエンジニアブログです。

方程式

MacのGrapherでアンパンマン

こんにちは、VOYAGE GROUPの水越(@Akiyah)です。

最近、会社で使うPCがMacBook Proになったので、Mac OS X v10.7 Lionに付属しているソフトを眺めていたら面白いものを見つけました。それはグラフ描画ソフトのGrapherです。

Grapherとは、Mac OS X付属のグラフ描画ソフトです。Grapherを使うと分数やn乗、絶対値、括弧などの数式を簡単にかっこよく書くことができて、その上その数式をグラフにしてくれます。数式を書いてグラフにする、という点に関してはここで何度か紹介しているRよりもお手軽にできます。

というわけで、アンパンマンを書いてみました。
14
アンパンマン方程式は前回Rで書いたものと同じです。Grapherを使って方程式の解を描画させました。こんな複雑な数式でもそのまま簡単に編集できて、とってもステキです。
 
Grapherは2次元だけでなく3次元のグラフも書くことができます。
z=アンパンマン方程式
と書き直してグラフにすると、簡単に3次元アンパンマングラフを書くことができます。
05
Grapherの中ではマウスで向きをぐりぐりかえることもできますよ。

こんなにすばらしいGrapherですが、検索してもあんまり情報が出てこなくて、世間ではあまり使われていないようです。これからも面白い使い方を見つけたらここで紹介していきますね。

参考
Grapher - Wikipedia
Grapherで遊ぼう
VOYAGE GROUP エンジニアブログ : Rを使ってお絵描き(アンパンマン方程式)

Rを使ってお絵描き(アンパンマン方程式)

こんにちは、ECナビの水越(@Akiyah)です。

Rでお絵描きの完結編です。アンパンマン方程式というものを作ってみました。
anpanman_equation
この方程式を解くと、こうなります。

anpanman_equation

アン、アン、アンパンマーン!
Rのコードはこんな感じです。
library(rgl)                           # パッケージの呼び出し
open3d()                               # デバイスの起動

rgl.bg(color="#808080")
rgl.light(theta = 5, phi = 5)
x <- seq(-110, 110, length = 880)
y <- x
anpanman <- function(x,y) {
    s(((x   )/85)^2+((y   )/85)^2-1) * # face
    s(((x-55)/24)^2+((y +5)/24)^2-1) * # cheek
    s(((x   )/28)^2+((y +5)/23)^2-1) * # nose
    s(((x-18)/ 9)^2+((y-40)/15)^2-1) * # eye
   s((((x-18)/12)^2+((y-45)/20)^2-2) * h(y-45) + 1) * # eyebrow
   s((((x   )/42)^2+((y+35)/18)^2-2) * h(-y-35) + 1)   # mouse
}
s <- function(z) { sin(z*pi/2) * ((z < 1) * (z > -1)) + (z >= 1)*1 + (z <= -1)*(-1) }
h <- function(z) { z>0 } # function(z) { (abs(z)/z + 1)/2 }
anpanman_view <- function(x,y) {
  -abs(anpanman(abs(x),y) * 30)
}
z <- outer(x, y, anpanman_view)

col_g <- gray(0:3/3)
col <- col_g[1 + 1-((z < 3) & (z > -3))]
terrain3d(x, y, z, color=col)
方程式の正体は、楕円の方程式の組み合わせです。
眉毛と口の式を工夫して、うまく楕円の半分になるようにしました。
前の二回のアンパンマンは眉毛がかけなくて悔しかったのですが、やっと完璧なアンパンマンにすることができましたよ。

記事検索
QRコード
QRコード