忍者ブログ
20080511~ 13と7と11の倍数の論理積は13と7と11の積の倍数である。 和ァ・・・
[2617] [2616] [2615] [2614] [2613] [2612] [2611] [2610] [2608] [2607] [2606]
そういえばまだこのテーマで日記書いたことありませんでしたっけ?


たとえば立方体を描きたい場合
空中に面を描く 
まず、図のようにx、y、zの座標データのセットを入力します。
これで1枚の正方形が描かれます。
立体ではなくあくまで面として描かれることに注意してください。

四角形なのに5組のデータがあるのは、元の場所に閉じさせるためです。
n角形の場合はn+1組のデータが必要です。

これは、左右:x、上下:y、奥手前:zとした際に、キューブの手前を想定した面です。


次に奥に配置するデータを考えます。
図のようにzだけが異なります。
空中に面を2枚描く 
面データの組同士は空白にしないと、折れ線グラフの場合につながってしまいます。
文字やスペースを入れてもグラフにゼロとして表示されてしまいます。ぬるぽ

もし間を開けたくなければ点の集合を線とみなすこともできます。
どちらにせよ管理が煩雑になりがちです。


手前・奥で行ったことを左右・上下でも繰り返します。

空中に6面を描く 模式図 
立方体のように等方的な物体の場合は、x、y、zの3軸が対称なので、コピペが有効です。
また、わかりやすいように部品ごとにラベルをつけてあげるとこれが意外と役に立ちます。



データが揃ったところで、回転をさせてみましょう。
ジンバルロックが発生しないクォータニオンを用いることもできますが
今回は簡易3Dモデリングなので、回転行列を用います。
3軸回転行列 
それぞれの軸の回転行列はこのように定義されるため、以下のように配置するとよいでしょう。
回転行列と複合行列 
合成の部分では3軸の回転をひとまとめにしてあります。
行列計算の関数mmultを使って、mmult(x軸回転、mmult(y軸回転、z軸回転))のように記述し
代表のセル(左上)を選択しながら計算させたい領域(3行3列)を選択した上で数式バーをクリックし、そこで
これもsteins;gateの選択ゥ!     
ctrl+shift+エンター
を押せば全体に計算が行き渡ります。

総角540度で一周り   
知っての通り、行列演算は順番が命です。
したがって、z軸回転させたあとにx軸回転させるのとその逆とでは結果が異なります。
ラジオ体操第一の最後の、手を上げ下げする動きを思い出してください。


まあその辺は留意しながら順序を調整して回転させてあげてください。

x,y,zのデータ組に作用させるのも行列の掛け算mmult関数で行います。
x,y,zの横ベクトルの右に、合成した回転行列を掛け算すると、元のと同じ1行3列のベクトルデータが得られます。

(x',y',z')=mmult((x,y,z),回転行列)
といった感じの記述になります。
回転行列に絶対参照(、ベクトルデータに複合参照)をつけるのを忘れないで下さい。




ここで、空白セルの扱いに困りがちになると思います。
とりあえずここはエラーを出させといていいと思います。
3D回転(ジンバルロックあり) 



なお、並進移動は動かしたい分を足し引きするだけです。
10.A図 
ここで、エラー値をホンモノの空白にしてx-yグラフを作成すると、回転角度に応じて透視図ではなく投影図として描かれることがわかると思います。



ここで、簡易的に遠近法を用いて投影図から透視図にすることもできます。
グラフの中心を消失点とすると、遠近法がかなり簡易に描写可能です。

 
まず、zのデータに下駄を履かせて、負数にならないようにします。
次に、xとyの値をzに比例して拡大させます。
投影→下駄下駄→遠近 
これだけです。
10.4図 

といってもこの場合、近くにあるものを小さく、遠くにあるものを大きく描写しているので、遠近が逆になっているので注意してください(にゃん太)



ついでにこのキューブを動かしてみましょう。(XP界隈のOSとスペックでしか動作確認していませんが!)

ミリ秒取得の方法を用いますと
このようになります。

now関数を使うのはいいのですが、どうしてtoday関数を引くのか説明したことがあまりありませんでしたね
桁あふれを防ぐのに、この関数が格好の餌食だったのです。



次に、循環参照を使った具体的な動かし方を紹介します。
循環参照の反復計算を開始するスイッチとなるセルを設け
そのスイッチが0だったら初期値のゼロを、
スイッチが1になったら自分自身のセルに0.5ずつ足していく式を入力するとこうなります。
間違い探し



まあ、あんま汎用性のある3Dモデリングの方法ではありませんが
Excelでマクロもアドインも用いずにこの程度ならできることがわかるかと思います


奥を点線にしたり、面に塗りつぶしを施したりしようとすると急に面倒になるんですよねぇ

ブログランキング・にほんブログ村へ
にほんブログ村

拍手[2回]

PR

コメント
3D
3Dで三頭身のマネキンみたいなのって作れますか?
【2014/04/20 13:20】 NAME[ZERO] WEBLINK[] EDIT[]
おおおおお!?
コメントありがとうございます!!

キューブではなく回転楕円体というアプローチになりますが、頭、胴体、左右の足と手、といった感じにいくつか設けるとできないこともないかと思います。すごく煩雑ですけどね^^;
イメージとしては
http://liuxackey.blog.shinobi.jp/suiso/ここにs軌道があるじゃろ可視化機

みたいな感じでしょうか。これは2次関数を回転させたものなんですが、2次関数の代わりに楕円を用いるわけです。
【2014/04/20 21:24】 NAME[NONAME] WEBLINK[URL] EDIT[]


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


忍者ブログ [PR]
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
ブログランキング
ブログランキング参戦中
にほんブログ村 アニメブログ 深夜アニメへ
にほんブログ村 漫画ブログ SF・ファンタジー漫画へ
にほんブログ村 科学ブログ 自然科学へ
よかったらポチッとお願いします^^
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新TB
プロフィール
HN:
量子きのこ
年齢:
43
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます
例:H→7番目、XP→15(P)×26+23(X)=413番目。
A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
バーコード
ブログ内検索
アクセス解析