
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
z軸まわりの回転行列
cosθ -sinθ 0
sinθ cosθ 0
0 0 1
x軸まわりの回転行列
1 0 0
0 cosθ -sinθ
0 sinθ cosθ
y軸まわりの回転行列
cosθ 0 sinθ
0 1 0
-sinθ 0 cosθ
任意軸まわりの回転行列もあるけど複雑すぎて掲載不可能ww
行列は全て, 後ろからベクトルをかける場合の形です.
http://www.amazon.co.jp/gp/product/4939007375/re …
↑
この本がわかりやすい.立ち読みしれみれば?
No.6
- 回答日時:
下の回答(#5)にゴミが入りこんでしまいました。
5行目は(法線ベクトルを(X,Y,Z)とすると、X=(z1*y2+z2*y3+z3*y1)-(y1*z2+y2*z3+y3*z1)、
です。すみません。
No.5
- 回答日時:
プログラムを作ってみました。
動作も確認できたのですが、回答の文字数制限(半角1600字)を超えてしまいましたので掲載できません。採用した手法は以下の通りです
(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)の3点を使う
3点で決まる平面の法線ベクトルを求める
(法線ベクトルを(X,Y,Z)とすると、X=(z1*y2+z2*y3+z3*y1)-(y1*z2+y2*z3+9-y3*z1)、
y成分,z成分についてもこの式の変数を循環させれば求まる)
法線ベクトルを、x成分が0になるように、z軸の回りに回転する
(回転の角度は atan2(X,Y)、この回転の後の法線ベクトルを(0,Y1,Z1)とする)
法線ベクトルを、y成分が0になるように、x軸の回りに回転する
(回転の角度は atan2(Y1,Z1))
(図形を任意の向きに向けるために)任意の角度だけz軸の回りに回転する
これらの回転で使った変換行列を元の3点に順番に掛ければ、元の3点のz座標は等しくなる(平面はXY平面と平行になる)
もっと良い方法があるかもしれませんが、ご参考までに。
ご丁寧にありがとうございました。
やり方がわかった分進めることが出来ました。
プログラム、是非比較して見てみたいのですが。。。
仕方ないですよね;
また、質問するかもしれませんがほんとにありがとうございました。
答えてくださったみなさんも、至らない点が多々ありましたが
つきあってくださってありがとうございました。
No.4
- 回答日時:
>XY平面と平行になる
>(x,y,z)成分4点で出来ている四角形
四角形ポリゴンと言うことでしょうか?
>回転の中心は四角形の中心です
XY平面と平行になるということは3次元空間のお話ですから(2次元なら常にXY平面と平行のはず)回転の中心は点ではなく軸(線)になります。
Z軸を中心に回転させてもXY平面と平行になることはありませんから、X軸回転かY軸回転と言うことでしょうか?
何がわからないのかよくわからないので上手く回答できませんが、
・行列の確保
3次元の変換行列は4行4列になります。4×4の2次元配列を確保すればよいのではないでしょうか。
(例) float Martix[4][4];
・行列の計算
筆算で行列の計算はできますか?もしできるのであれば、プログラムは簡単だと思います。できないのであれば、「行列」でググっていただければよいサイトを沢山見つけることができます。
・変換行列の作り方
「変換行列」 「3次元」 でぐぐれば、よいサイトを沢山見つけることができます。
ただし、x,y,zの座標を縦ベクトルで管理するか、横ベクトルで管理するかで、行列の内容や掛ける順序が変わってきますので注意してください。
No.2
- 回答日時:
そもそも
> 3次元空間における
>(x,y,z)成分4点で出来ている四角形を任意に入力して
この時点で入力されたのは四角形ではなく、四面体です。
# 四角形になるのは特殊な場合。
なので一般に「XY平面と平行になる」パターンが4つできてしまいます。
> 行列の、sinやcosを使った掛け算の
> ソースの例をあげてもらえると助かります。
行列の掛け算ルーチンさえできてしまえば、各要素が何であろうが関係ないのでは?
この回答への補足
言い方が足りなくてすいませんでした。
任意でも、平らになる四角形です。
掛け算はやり直しているので大丈夫です。
何度もすいませんが、自動で「XY平面と平行になる」
回転行列がわからないのでそこの部分だけでも教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 3次元実ベクトル空間において, 平面 P:x-y+z+1=0 と直線 L:2(x-1)=-y=-z 3 2022/10/29 14:39
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- その他(プログラミング・Web制作) プログラムが書けません。 6 2023/01/22 22:58
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- 数学 ある一次分数関数があり、 その関数が 平行移動 回転伸縮 反形 を構成されていることをわかるように分 2 2023/06/30 10:43
- 数学 1次分数関数の問題です。 ご教授お願い致します。 1次分数関数である w=(ーz+2ーi)/((−2 2 2023/07/23 16:14
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについて。 1つ...
-
gccを行ってもexeファイルが生...
-
c言語
-
visual studio 2022でのC#プロ...
-
C# DatagridviewにExcelシート...
-
mallocについて
-
C言語って古いですか?
-
C言語関数違いについて。
-
逆コンパイルと逆アセンブルの...
-
プログラムの実行時に'<'でリダ...
-
パソコン
-
CPUが16bitでも32bitOSでコンパ...
-
Python、プログラミングについ...
-
だれがとけるの?
-
バッチファイルで以下のような...
-
Notepad++の関数リスト表示の変...
-
VisualStudio2022でC言語プログ...
-
License='MIT' ってなんでmitな...
-
C言語 ストリームについて。
-
c言語でイベントフラグを使った...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語
-
gccを行ってもexeファイルが生...
-
大量のデータを読み込んで表示...
-
visual studio 2022でのC#プロ...
-
C++でデスクトップGUIアプリ開...
-
【C言語】全角文字の配列を、全...
-
Windows Formアプリからコンソ...
-
VisualStudio2022でC言語プログ...
-
C#でログファイルにファイルパ...
-
C#でTreeViewのCheckBoxのサイ...
-
c#のTLS1.2での通信について
-
VisualStudioでC++クラスを追加...
-
C言語について。
-
int16_t の _t は何?
-
プログラマー達は何故、プログ...
-
逆コンパイルと逆アセンブルの...
-
C言語の関数のextern宣言
-
c言語でイベントフラグを使った...
-
C言語 関数、変数の宣言について
-
[C言語]fputsとfprintfの違い
おすすめ情報