ネタ
アポロとは明治が製造販売しているチョコレート、 上がピンクで下が茶色の美味しいお菓子です。
三角形の特徴的な形は、1969年に月面着陸した宇宙船アポロ11号がモチーフになっています。
本記事ではアポロをR言語で立体描画した際の流れを記載しました。応用が利く内容ではないですが、話のネタにやっただけで、技術的は話は過去記事の寄せ集めです。
アポロチョコの立体データを取得する
アポロチョコレートは帰還船の形をモチーフにしています。
これらの3次元データは公表されていないので、似た形である富士山のデータを利用します。
美しい円錐状の富士山ですが、国土地理院が山岳の3Dデータを公開してくれています。
データの読み込みは上の記事にもある通りmatrix関数が利用できます。
データ自体を一次元配列として取得します。
> mt_fj <- matrix(scan("C:/XXX/dem.csv",sep=",")) [1] Read 66049 items
アプロデータの描画
富士山の立体データを取得したので後はこれを上部はピンク、下部は茶色で描画するのみです。
以下の記事と本質的には同じですが、scatterplot3d関数を利用し、高さに応じて色分けをします。
for(i in 1:257){ for(j in 1:257){ if(i==1 && j==1){ if(mt_fj[(i-1)*257+j]>35){ apollo <- c(i,j,mt_fj[(i-1)*257+j],"#ff7fbf") } else { apollo <- c(i,j,mt_fj[(i-1)*257+j],"#6c3524") } } else{ if(mt_fj[(i-1)*257+j]>35){ apollo <- rbind(apollo,c(i,j,mt_fj[(i-1)*257+j],"#ff7fbf")) } else{ apollo <- rbind(apollo,c(i,j,mt_fj[(i-1)*257+j],"#6c3524")) } } } } scatterplot3d(apollo[,1:3],color=apollo[,4],grid=FALSE,xlab="",ylab="",zlab="")
1,2列目にはX座標Y座標、3列目に高さ、4列目に色情報を入れています。
おまけ
逆アポロ
以上です。