見出し画像

Excelのグラフで3Dオブジェクトの頂点を表示する実験②

Excelの散布図を使えば、簡単な3D表示を行うことができるのではと思い、試しに実験してみた。

今回は第2回目。
前回は手順①~③まで行った。

前回までの手順

①ワールド座標系の値を入力

②カメラ位置の入力欄を作る

③カメラを原点とした座標の計算


今回はその続きを進めていくよ

では、早速進めよう!

④カメラの回転を計算に入れる。

カメラの向きの角度を指定できるようにセルを用意する。
※セルの場所はカメラ位置の下にした。

今回は簡単にするため、回転の軸は、y軸のみ(xz平面上の回転)とした。
上の図は、30度回転するように指定した場合。
上空(y軸の正の方向)からxz平面を見下ろすと図1のようになる。

図1 xz平面を上から見下ろした図

図1の場合、カメラは右へ30°向いたときに、
xyz空間上の点は左に30°動く(回転する)ことになる。(図2)

図2 カメラを右へ30°向けると空間上の点は左へ30°回転する

※これは、実際に、自分の顔を左に向けたときに、見えている景色が右側に動くことを確かめると分かりやすいと思う。

動いた先の点の座標(x', y', z')とすると、
x' = x cos30° - z sin30°
z' = z cos30° + x sin30°

高さ y'は、この回転では変わらないので y' = y

Excelのsin関数、cos関数の単位はラジアン(0~2π)となっているので、
少し計算式を工夫する必要がある。

180°でπ なので、
1°で180分のπ 

30°で180分の30π → 30π / 180
※ / は割る の意味( ÷ を Excel上では / で表す)

x' = x * cos( 30π / 180 ) - z * sin( 30π / 180)
z' = z * cos( 30π / 180 ) + x * sin( 30π / 180)
y' = y 


それでは、Excelに
カメラの回転を計算させていくよ

Excelにカメラの回転を計算させる場所を作る(図3)

図3 カメラの回転を計算させる場所を作る

N3セルに計算式を入れる(図4)
計算式『=J3*COS(F7*PI()/180)-L3*SIN(F7*PI()/180)』

図4

計算式をいれると、-4.46と出た。(図5)
カメラを回転する前はx座標が- 4 だったのが -4.46。
30°カメラを右側に向けたので、点は左側に移動している。
計算も合っていそう。

図5

O3セルにも計算式を入れる。
ここには、カメラ座標系のy座標がそのまま入るので(y' = y)
『=K3』と入れる。(図6)

図6

P3セルにも、計算式を入れる。(図7)
計算式『=L3*COS(F7)*PI()/180)+J3*SIN(F7*PI()/180)』

図7

計算式を入れると、-0.27と出た。(図8)

図8

これを他のセルにもコピーしたい。
F7セル(カメラの回転角度)だけは、変わらないで欲しいので

N3セルの2つのF7をF$7として、
『=J3*COS(F$7*PI()/180)-L3*SIN(F$7*PI()/180)』

P3セルも2つのF7をF$7として、
『=L3*COS(F$7)*PI()/180)+J3*SIN(F$7*PI()/180)』

N3セルから P3セルまで選択して、
緑色の四角の右下を下に引っ張って、
P12まで持ってくる。(図9、図10)

図9
図10

本当にカメラの回転が適応されているか。
F7セルの値を変えてみる。
F7を0, 15, 45と変えてみる。(図11、図12、図13)

図11
図12
図13

うまく計算されているようだ。

今回はここまで。
かなり難しい内容だったので、どうだろう。
次回は、散布図のグラフで3D空間を表示してみるよ。

お疲れさまでした。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?