• ベストアンサー

3dの行列計算とは何ができるのですか?

移動と拡大縮小と回転を一括で制御すると言われてもよくわかりません。 かんたんな概念を理解できる図はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1512/2198)
回答No.2

回答No.1の者です。 「もう少し砕いた説明」と言われても、ここでは回答に行列を書くのも難しいですし、質問者さんがどれくらいの知識を持っているかも回答者には分かりません。 理解するには今だと大学初等レベルの数学(線形代数)が必要です。 たとえば、2×2の行列同士の積を手で計算したことはありますか? http://ailaby.com/rotate_vec/にある図と説明を見て理解できますか?

inudaisukidesu
質問者

補足

わからないですね

その他の回答 (1)

  • _kappe_
  • ベストアンサー率68% (1512/2198)
回答No.1

(拡大/縮小する行列)×(元座標のベクトル)を計算すると、原点を基準とした拡大/縮小後の座標のベクトルを求めることができます。 同じように、(回転する行列)×(元座標のベクトル)を計算すると、原点を基準とした回転後の座標のベクトルを求めることができます。 拡大/縮小した後に回転する計算は (回転する行列) × ((拡大/縮小する行列)×(元座標のベクトル)) となりますが、ここで計算順序を変えて ((回転する行列)×(拡大/縮小する行列)) × (元座標のベクトル) とすると (拡大/縮小と回転を行う行列) × (元座標のベクトル) と変形することが可能です。 これで、拡大/縮小と回転の両方をまとめて行える行列ができました。 平行移動は簡単には行列演算ではなくて(元座標のベクトル)+(移動量のベクトル)になるのですが、これもちょっと工夫することによって行列の乗算に変換することができます。あとは上の例と同じように他の操作を行う行列と平行移動の行列を乗算して、複数の操作をまとめて行う行列を作ることが可能になります。

inudaisukidesu
質問者

補足

ありがとうございます。 もう少し砕いた説明などないでしょうか。

関連するQ&A

  • 線形変換 ユークリッド変換

    線形変換 ユークリッド変換 線形変換とユークリッド変換について質問させて下さい。 いろいろ調べていると、添付画像のようなベン図?を見つけました。 線形変換は拡大・縮小、鏡映、剪断、回転の変換で、ユークリッド変換は平行移動と回転と表されています。ユークリッド変換は平行移動と回転だけなのですか? 線形変換は原点が存在すると思いますが、ユークリッド変換は原点が存在しないのでしょうか? ユークリッド変換の対象となる空間はユークリッド空間だと思いますが、ユークリッド空間では 拡大・縮小等を定義できないのでしょうか? 以上、多々理解できていないのでご回答よろしくお願い致します。

  • VBを使って行列による3Dの図形やグラフを描画するのですが・・

    本をよんでいるのですが自分の創造した図形の3D座標を2Dの座標に変換する仕方やその点の座標をどのように行列に当てはめるのかがわかりません。行列での回転・縮小拡大の仕方などが・・。 3Dの描画や行列に詳しい方教えてほしいです。 もし詳しくなくても関係のあるVBサイトがあれば教えてほしいです。 お願いします。

  • イラストレーターで、図を拡大しようとしても、移動してしまう。

    よろしくお願いいたします。 次の二つの症状があります。 (1)  イラストレーターで図を拡大するために、(例えば単純な正方形を)選択して、角にカーソルを合わせてドラッグすると以前は拡大縮小できていました。今回、同じ事をやっても、図が移動してしまって、拡大縮小になりません。 (2)  四角形を2つ少し離して描き、2つともまとめて全体的に拡大しようと、選択ツールのカーソルで2つの図の外側を囲もうとしても、囲めず、それぞれの四角形そのものだけが選択されてしまう。(囲んだエリアとして選択されない) 以上について特に(1)が困っていますが、(2)も、たしか以前はできていたような覚えがあります。(1)(2)それぞれ拡大するにはどうすればよいでしょうか?

  • Flashで模様のある回転体を表現

    Flashで回転する物体を描きたいです。 例えば、太陽を中心に固定して、その周りを地球が回る、といった感じです。 地球の模様がなければ、周りをまわしてうまい具合に拡大縮小させれば できそうなのですが、地球の自転を表現しようとするとよくわかりません。 あらかじめ球面の模様を定義しておいて、それが回転しながら移動する といったことができるのでしょうか? どうしても無理ならば、少しずつ回転させた地球を何種類も作り、それを 拡大縮小しながらすり替えていこうかと考えています。 よろしくお願いします。

  • パワーポイントの組織図の拡大

    パワーポイント2000で組織図を作っていく時、四角や線を消したり移動したり出来ないものでしょうか? また、全体を拡大縮小はできますか?ワードの図のようにはいかなくて困っています。よろしくお願いします。

  • 行列を使った計算

    「質問」 行列を使った計算で、何が楽になるのか感覚的に分からないので 具体例を教えて欲しいです。 「質問に至った経緯」 統計に強くなりたいと思い行列の勉強を始めました。 単位行列や逆行列や可換や、不定や不能といった概念を学んでいるところです。 本の最初ではカフェに出てくるお茶のカロリーや値段という例に基づいて行列の 計算をしてみよう、という内容だったのですが、逆行列を解説するページ辺りでは 数式のみの説明になってしまいました。 逆行列の計算の方法は理解しましたが、具体例がなく説明されていたので 一体これは何の為の計算なんだろう、、?統計とどう関係があるのだろう、、、? と少し退屈な気持ちになってしまっています。 自分で調べたところ "多くの変数を分析する時に、行列を用いて計算をすると楽だから、行列がある" そんな旨のことがあるウェブサイトに書かれていました。 役に立つことは理解できましたが、やはり漠然とした理解なので、ちょっともやもやしています。 私としては学習を進めるにあたって、何の役に立つのか理解しておかないと 非常に退屈な気持ちになるので、もっと具体的にどういうふうに役に立つのか 知りたいです。 といっても、行列を大して理解もしていないのに、難しい分析をするというの難しい話です。 「質問のまとめ」 出来れば生活に身近な事柄を使って、行列を用いると計算が楽になるという具体例を教えていただけないでしょうか? 「質問者の知識レベル」 私は数学に弱い人間なので、難しい単語や概念の話をされると わからない可能性が高いです。可能なレベルで文章を柔らかく書いてもらえると 非常に助かります。 「蛇足」 質問文において、改善した方が良さそうなところがあれば 教えてほしいです。

  • 縮尺の計算方法

    2cmで200mは何分の一 の縮尺になりますか? xcmでymの縮尺の計算方法は? 「 1/25000の地図を拡大・縮小コピーしたものは 1/25000では無いことと同様です 図中に尺度(線が引いてありそこに100mとかの長さが示されている)が記載されていれば その尺度の長さと表示されている長さの比がその表示された図の縮尺です」 尺度付の地図を拡大縮小コピーしたものは元の地図と同じ縮尺と考えていいですか?

  • 3Dゲームを作っているのですが、行列計算で気が狂いそうです。 助けてください。 

    こんばんは。 初めて相談箱を利用する、NTD_Kyotoと言う者です。 忙しいので、積極的にレスしたり、すばやく返答したりと言う事が出来ない身ですが、よろしくお願いします。 高校時代ウェブ系のプログラムを始めたが、自宅パソコンが糞と言われたメーカーと糞といわれたOSと、多分ウィルスに呪われておかしくなり、一時プログラムを断念。 その後、コンピュータ系の学校に進学し、自分のパソコンを買って3Dゲームを作り始め、一年に満たない程度という、おかしな経歴を持ってます。 本題に入りますが、素人故、今、ひとまず便利関数の多いDirectX9を使って3Dゲームの製作に取り組んでいますが、下に示す処理を目的とした3Dモデルの行列計算が、いよいよ想像できなくて困っています。 ■困っている内容■ スマブラのメトロイドやポケモンのコースみたいな感じで、地形が回転することがある。 主人公の回転処理は、D3DXMatrixYawPitchRoll(RotMatrix, Rot.y, Rot.x, Rot.z); 主人公の移動処理は、D3DXMatrixTranslation(PosMatrix, Pos.x, Pos.y, pos.z); で管理。 後に、3Dモデル描画関数に与える D3DXMATRIX型変数、PlyaerMatrixに、  PkyaerMatrix = RotMatrix * PosMatrix *      ModelRot ; 両者をかけ、D3DXMatrixAxisで、回転を与えている、これ↑ 地形の回転行列を格納した値D3DXMATRIX型変数、ModelRotをかける事で、 主人公の位置を管理しているのですが。 見た目のみ表示用マトリックスで回転しているだけで、実体は回転していないほうのモデルなので。 たとえば45°回転後した後重力が”回転後の”床へと生じてしまうので. ○ ..|............↓G _____________ ...○...\.|G .........\ ̄./ .............../ 仕方ないから、発想を逆転して、床の角度に応じて重力の向きを変え、あたかも地形が回転しても重力は下に働いているように見せるというプログラムを実装することで解決したのですが。 PkyaerMatrix = RotMatrix * PosMatrix * ModelRot ; この処理で                     ↑こいつをかけているため、 主人公も、地形に合わせて、回転してしまうんです。 ○←頭 |←体 ______ 回転前      ○ ......\/ ...../ 45°回転後 さらに45° _____________ ........| ......○ しかし、PkyaerMatrix = RotMatrix * PosMatrix * ModelRot ;                     こいつをかけないと↑ 結局、座標に忠実な真の地形の上を主人公が歩いてしまい、意味がない。 ようは、回転後も、現座標の床から離れることなく主人公の向きを下向きにしたいのです。 だれか、私にこの問題を解決する数学力をください! お願いします!

  • 3dsmax2009 選択して移動コマンド

    3dsmax2009を使用しています。 初心者なもんで、原因がわからないのですが 急に「選択して移動」を選んでオブジェクトを移動しようとしても 中心から動かなくなってしまいました。 回転や拡大縮小コマンドはちゃんとできるのですが 移動のみ動きません。 設定の問題なのか、何か違う原因があるのか全くわからなく 大変困っています。 どなたかお詳しい方、教えてください。

  • 行列とは

    行列という概念が理解出来ないのですが、行列が生まれた背景や必要性などご存知の方、、教えていただけますか?

専門家に質問してみよう