>>36 やっぱりそうかー。
16個の値を元にハッシュして出来た値を基準にして比較すれば
できそうだけど、数学的なマトリックスの大小関係では無いんですよね。
#そもそも、マトリックスに大小関係があるかどうかも知りません。
まぁSTLで使うだけなら「異なるマトリックスが同じ基準値をとることがない」
ってことだけクリアーできればOKだから、ハッシュでやってみるかな。
ハッシュテーブルのサイズがどれくらいになるか見当もつかないけど。
38 :
デフォルトの名無しさん:02/10/08 12:26
鬱だ氏のう..
40 :
デフォルトの名無しさん:02/10/08 15:53
幾つかの変換が適用されたマトリックスを移動、回転、縮小に分解したいのですが
どういった方法がありますか?
42 :
デフォルトの名無しさん:02/10/08 16:08
上野は何?
>>39 気遣いありがとう。
終盤になってコロコロと平気で話を変えるヘボSEのせいでマジで死にそう。
今月で終わればいいが。。。
>>44 移動は
|1 0 0 0|
|0 1 0 0|
|0 0 1 0|
|x y z 1|
こんな感じです。
46 :
デフォルトの名無しさん:02/10/08 23:52
倍精度でやるには素数は必要ですか?
47 :
デフォルトの名無しさん:02/10/09 07:54
>>44 平行移動をパラメータとして扱うためには3x3じゃなくて
普通は4x4行列を使います。
詳しくは「宇治杜中」ってサイトでどうぞ。3D野郎は既知だろうけど。
48 :
デフォルトの名無しさん:02/10/09 07:56
>>46 特に意識する必要はないと思うけど・・・。
どんなルーチンを考えていますか?
49 :
デフォルトの名無しさん:02/10/09 07:57
>>41 は
>>40 へのレスなの?それともスレ違い??
高度すぎてよくわからないけど。
50 :
デフォルトの名無しさん:02/10/09 08:05
>>41 うーんと、わたしもよく分からないんですが(^^;
これは線形代数とかの分野になるんでしょうか?
明日にでも大きい本屋に行って買ってきます。
>>45 回転順がXYZだとすれば、Rが回転Matrixです。
3x3と一緒です。
R = Rx * Ry * Rz
| 1 0 0 0 | = Rx
| 0 cx sx 0 |
| 0 -sx cx 0 |
| 0 0 0 1 |
| cy 0 -sy 0 | = Ry
| 0 1 0 0 |
| sy 0 cy 0 |
| 0 0 0 1 |
| cz sz 0 0 | = Rz
| -sz cz 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
sx = sin(RotateX), sy = sin(RotateY), sz = sin(RotateZ)
cx = cos(RotateX), cy = cos(RotateY), cz = cos(RotateZ)
| x 0 0 0 | = G(x,y,z)
| 0 y 0 0 |
| 0 0 z 0 |
| 0 0 0 1 |
H =G(x,y,z)* Rx(φ1)*Ry(φ1)*Rz(φ1)*MOVE(x,y,z)
と分解したいって事だね?
欲を言えば、scaleの中心点とpivotの中心点も扱いたいです。
Scale * Shear * Rotate * Translate
とやるのが普通だと思うのですが、
Scale = ScalePivot * Scale
Rotate = RotatePivot * Rotate
を前処理でやらせる感じでしょうか。
※ScalePivotとRotatePivotの行列は、Translateと同じ形です。
あー、pivotを掛けるときに逆行列にしないといけないかもしれません。
まずMOVE(x,y,z)のx,y,z を求める。
次に回転行列を 任意ベクトルに積しても大きさは変化しない
|a0,b0,c0| ---> (a0^2+b0^2+c0^2)=1
|a1,b1,c1| ---> (a1^2+b1^2+c1^2)=1
|a2,b2,c2| ---> (a2^2+b2^2+c2^2)=1
もし変化したなら、その変化分は伸張によるとすれば求まるのでは?
>>57 >任意ベクトルに積しても大きさは変化しない
これ知りませんでした。(もしくは完全に忘れたか)
TranslateとScaleは取得できました。
RotateをRotateX,RotateY,RotateZに分解するには
どうすればいいでしょうか?
59 :
デフォルトの名無しさん:02/10/11 14:08
>>41 それだとa+biとa-biの大小はどうなるの?
>>60 「でも必ず分解出来るかどうかは判らない」ってのは
ちょっと嫌だな・・・。
たとえばどういう場合に分解できなくなります?
62 :
デフォルトの名無しさん:02/10/22 13:06
行列って、可逆だと思ってたけど違うんだねー。
63 :
デフォルトの名無しさん:02/10/22 16:17
>>15 実効性のあるFFT導入くらいはやらないとお勉強以上の意味はない。
行列は可逆じゃないでしょ たとえば行ベクトルと列ベクトルの積を考えれば
正方行列なら 行列式でも求めて、それで比較しますか? 意味ないけど
66 :
デフォルトの名無しさん:02/10/27 02:23
#include <stdio.h>
#include <float.h>
#include <stdio.h>
unsigned int_controlfp(unsigned int,unsigned int);
#define UP _controlfp(_RC_UP,_MCW_RC)
#define DOWN _controlfp(_RC_DOWN,_MCW_RC)
#define NEAE _controlfp(_RC_NEAR,_MCW_RC3)
class Interval
{
double min,max;
public:
Interval(double a= 0);
Interval(double a,double b);
void Print(void);
friend Interval operator+(const Interval &x, const Interval &y);
friend Interval operator-(const Interval &x, const Interval &y);
friend Interval operator*(const Interval &x, const Interval &y);
friend Interval operator/(const Interval &x, const Interval &y);
};
67 :
デフォルトの名無しさん:02/10/27 02:25
↑のプログラムのunsigned int_controlfp(unsigned int,unsigned int);
とfriend Interval operator+(const Interval &x, const Interval &y);
の意味がわからない 教えてください
68 :
デフォルトの名無しさん:02/10/27 02:30
unsigned int_controlfp(unsigned int,unsigned int);
#define UP _controlfp(_RC_UP,_MCW_RC)
#define DOWN _controlfp(_RC_DOWN,_MCW_RC)
#define NEAE _controlfp(_RC_NEAR,_MCW_RC3)
で、0捨1入、上、下への丸めの指定でした。
すいません。
69 :
デフォルトの名無しさん:02/10/27 13:52
C++で幾何数学を勉強したいのですが…
C++は微分可能ですか?
71 :
デフォルトの名無しさん:02/10/28 03:00
A
>>66 #include <cfloat>
#include <cstdio>
3Dとかに使うので中身はアセソブラソで実装しときまひょ(゜ ∀ ゜)
あー、pivotを掛けるときに逆行列にしないといけないかもしれません。
75 :
デフォルトの名無しさん:02/11/29 16:09
C++は C^2 級ということですか?
>>70 その発想ワロタ
C++はどう見ても連続じゃなさそう
そうなると自明に微分不能に・・・
77 :
デフォルトの名無しさん:02/12/01 02:07
valarray は?
SSE2で微分可能になる。
(だろうか?)
79 :
デフォルトの名無しさん:02/12/01 02:53
∂C++/∂SSE2=
80 :
デフォルトの名無しさん:02/12/01 09:12
すこしは線形代数勉強しろ!!
matlabは?
(´Д⊂ヽ何言ってるかわかんないよ〜
微分云々なら解析学じゃないのか
84 :
デフォルトの名無しさん:02/12/01 13:59
C++でフーリエ級数は使えますか?
85 :
デフォルトの名無しさん:02/12/01 15:20
ト、
. | `ヽ、 ,..l-―''Z-‐''Z._,.-( ___,
. ト、| ヽ`く ト、 ´ ′ `´ ∠_.ィ
| | l ヽl `i ´ ム_.ィ
l. | l l i |::.............._ { C++の野郎は気にくわねぇ!
'、ー-ゝ、l. |i l l| l |l:::::::::::::::::`'ーz__ |
ヽ. ミ>‐ッ、|,ィ-‐ッへィ-‐''¨了:::::::ーz ム 徹底的に反逆するぜ、
、_ヽ、ミ/ / / /,.--―、`'j::::::::ーz 了
ヽ、 ̄7´, イニミ-、i l /-┘jニ..⌒` }:::::::<_ ノ この「VisualAgeCOBOLのカズマ」がな!
ヽ/∠_ミヽ/⌒〉 l/''¨ス pゝ `'j::iへ、Z ぐ ト、
// .`ー}`フ l `'''  ̄'''" jリ ヘ }Z /^ | lヽ
/ .| \ __ r'フ /了/ | .|::|
l l ̄――v`i 「ーt'´::::/^ .} |::|
ヽヽ ,.-‐-‐ー} /|__,,..ルヘL__ ノ .|::|
ヽ`、_,,,,,__ノ_,,. -‐'¨´ _,.,.,.,.,.,.,,ヽ / ノミl
_,,..〉-‐'',ニ¨-―-、''""" 〈 / /ミ/
_,.-‐''¨ ,.-‐'¨フ´ `ヽ ∨ /ミ/
`'ー、 y′ / ミへ.._ ヽ/ミ/
`ーィ ゝ, ミく 人二ヽ li/