回答編集履歴
4
計算式の削除
answer
CHANGED
@@ -1,60 +1,1 @@
|
|
1
|
-
手計算したんだけど、double型にしないと精度が駄目でした。
|
2
|
-
```c
|
3
|
-
double Frame_Scene_Root[16]={
|
4
|
-
1.000000,0.000000,0.000000,0.000000,
|
5
|
-
0.000000,1.000000,0.000000,0.000000,
|
6
|
-
0.000000,0.000000,1.000000,0.000000,
|
7
|
-
0.000000,0.000000,0.000000,1.000000};
|
8
|
-
|
9
|
-
|
10
|
-
double Frame_body[16]={
|
11
|
-
|
12
|
-
1.278853,0.000000,-0.000000,0.000000,
|
13
|
-
0.000000,0.000000,1.123165,0.000000,
|
14
|
-
0.000000,-1.470235,0.000000,0.000000,
|
15
|
-
0.135977,2.027985,133.967667,1.000000
|
16
|
-
};
|
17
|
-
|
18
|
-
double Frame[16]={
|
19
|
-
|
20
|
-
1.000000,-0.000000,-0.000000,0.000000,
|
21
|
-
-0.000000,1.000000,0.000000,0.000000,
|
22
|
-
-0.000000,0.000000,1.000000,0.000000,
|
23
|
-
-0.142114,0.000023,-49.556850,1.000000};
|
24
|
-
|
25
|
-
|
26
|
-
|
1
|
+
いたらなかったため削除します。
|
27
|
-
|
28
|
-
void Ranks( double *temp ,double* a, double *b)
|
29
|
-
{
|
30
|
-
temp[0]=a[0]*b[0]+a[1]*b[4]+a[2]*b[8]+a[3]*b[12];//ok
|
31
|
-
temp[1]=a[0]*b[1]+a[1]*b[5]+a[2]*b[9]+a[3]*b[13];//ok
|
32
|
-
temp[2]=a[0]*b[2]+a[1]*b[6]+a[2]*b[10]+a[3]*b[14];//ok
|
33
|
-
temp[3]=a[0]*b[3]+a[1]*b[7]+a[2]*b[11]+a[3]*b[15];//ok
|
34
|
-
|
35
|
-
temp[4]=a[4]*b[0]+a[5]*b[4]+a[6]*b[8]+a[7]*b[12];//ok
|
36
|
-
temp[5]=a[4]*b[1]+a[5]*b[5]+a[6]*b[9]+a[7]*b[13];//ok
|
37
|
-
temp[6]=a[4]*b[2]+a[5]*b[6]+a[6]*b[10]+a[7]*b[14];//ok
|
38
|
-
temp[7]=a[4]*b[3]+a[5]*b[7]+a[6]*b[11]+a[7]*b[15];//ok
|
39
|
-
|
40
|
-
temp[8]=a[8]*b[0]+a[9]*b[4]+a[10]*b[8]+a[11]*b[12];//0k
|
41
|
-
temp[9]=a[8]*b[1]+a[9]*b[5]+a[10]*b[9]+a[11]*b[13];//0k
|
42
|
-
temp[10]=a[8]*b[2]+a[9]*b[6]+a[10]*b[10]+a[11]*b[14];//0k
|
43
|
-
temp[11]=a[8]*b[3]+a[9]*b[7]+a[10]*b[11]+a[11]*b[15];//0k
|
44
|
-
|
45
|
-
temp[12]=a[12]*b[0]+a[13]*b[4]+a[14]*b[8]+a[15]*b[12];//0k
|
46
|
-
temp[13]=a[12]*b[1]+a[13]*b[5]+a[14]*b[9]+a[15]*b[13];
|
47
|
-
temp[14]=a[12]*b[2]+a[13]*b[6]+a[14]*b[10]+a[15]*b[14];
|
48
|
-
temp[15]=a[12]*b[3]+a[13]*b[7]+a[14]*b[11]+a[15]*b[15];
|
49
|
-
|
50
|
-
|
51
|
-
}
|
52
|
-
|
53
|
-
Ranks(&temp[0],&Frame_Scene_Root[0],&Frame_body[0]);
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
```
|
58
|
-
|
59
|
-
ロジックがあってるかは別として書いてみたんだけどさ、
|
60
|
-
Frame_Scene_Root[0]とFrame_body[0]がdouble型にできなかったんだが、元の値が変わってしまうのですがどうすべきでしょうか。どこかを、constすればいいのか教えてください
|
3
double型にした
answer
CHANGED
@@ -57,4 +57,4 @@
|
|
57
57
|
```
|
58
58
|
|
59
59
|
ロジックがあってるかは別として書いてみたんだけどさ、
|
60
|
-
Frame_Scene_Root[0]とFrame_body[0]が
|
60
|
+
Frame_Scene_Root[0]とFrame_body[0]がdouble型にできなかったんだが、元の値が変わってしまうのですがどうすべきでしょうか。どこかを、constすればいいのか教えてください
|
2
double型にした
answer
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
+
手計算したんだけど、double型にしないと精度が駄目でした。
|
1
2
|
```c
|
2
|
-
|
3
|
+
double Frame_Scene_Root[16]={
|
3
4
|
1.000000,0.000000,0.000000,0.000000,
|
4
5
|
0.000000,1.000000,0.000000,0.000000,
|
5
6
|
0.000000,0.000000,1.000000,0.000000,
|
6
7
|
0.000000,0.000000,0.000000,1.000000};
|
7
8
|
|
8
9
|
|
9
|
-
|
10
|
+
double Frame_body[16]={
|
10
11
|
|
11
12
|
1.278853,0.000000,-0.000000,0.000000,
|
12
13
|
0.000000,0.000000,1.123165,0.000000,
|
@@ -14,7 +15,7 @@
|
|
14
15
|
0.135977,2.027985,133.967667,1.000000
|
15
16
|
};
|
16
17
|
|
17
|
-
|
18
|
+
double Frame[16]={
|
18
19
|
|
19
20
|
1.000000,-0.000000,-0.000000,0.000000,
|
20
21
|
-0.000000,1.000000,0.000000,0.000000,
|
@@ -22,9 +23,9 @@
|
|
22
23
|
-0.142114,0.000023,-49.556850,1.000000};
|
23
24
|
|
24
25
|
|
25
|
-
|
26
|
+
double temp[16];
|
26
27
|
|
27
|
-
void Ranks(
|
28
|
+
void Ranks( double *temp ,double* a, double *b)
|
28
29
|
{
|
29
30
|
temp[0]=a[0]*b[0]+a[1]*b[4]+a[2]*b[8]+a[3]*b[12];//ok
|
30
31
|
temp[1]=a[0]*b[1]+a[1]*b[5]+a[2]*b[9]+a[3]*b[13];//ok
|
1
文の改善
answer
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
```c
|
1
2
|
float Frame_Scene_Root[16]={
|
2
3
|
1.000000,0.000000,0.000000,0.000000,
|
3
4
|
0.000000,1.000000,0.000000,0.000000,
|
@@ -23,7 +24,7 @@
|
|
23
24
|
|
24
25
|
float temp[16];
|
25
26
|
|
26
|
-
void Ranks( float *temp ,float* a,float *b)
|
27
|
+
void Ranks( float *temp ,float* a, float *b)
|
27
28
|
{
|
28
29
|
temp[0]=a[0]*b[0]+a[1]*b[4]+a[2]*b[8]+a[3]*b[12];//ok
|
29
30
|
temp[1]=a[0]*b[1]+a[1]*b[5]+a[2]*b[9]+a[3]*b[13];//ok
|
@@ -50,5 +51,9 @@
|
|
50
51
|
|
51
52
|
Ranks(&temp[0],&Frame_Scene_Root[0],&Frame_body[0]);
|
52
53
|
|
54
|
+
|
55
|
+
|
56
|
+
```
|
57
|
+
|
53
58
|
ロジックがあってるかは別として書いてみたんだけどさ、
|
54
59
|
Frame_Scene_Root[0]とFrame_body[0]がfloat型にできなかったんだが、元の値が変わってしまうのですがどうすべきでしょうか。どこかを、constすればいいのか教えてください
|