teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

計算式の削除

2021/03/09 12:11

投稿

txty
txty

スコア304

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
- double temp[16];
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型にした

2021/03/09 12:11

投稿

txty
txty

スコア304

answer CHANGED
@@ -57,4 +57,4 @@
57
57
  ```
58
58
 
59
59
  ロジックがあってるかは別として書いてみたんだけどさ、
60
- Frame_Scene_Root[0]とFrame_body[0]がfloat型にできなかったんだが、元の値が変わってしまうのですがどうすべきでしょうか。どこかを、constすればいいのか教えてください
60
+ Frame_Scene_Root[0]とFrame_body[0]がdouble型にできなかったんだが、元の値が変わってしまうのですがどうすべきでしょうか。どこかを、constすればいいのか教えてください

2

double型にした

2020/09/19 07:10

投稿

txty
txty

スコア304

answer CHANGED
@@ -1,12 +1,13 @@
1
+ 手計算したんだけど、double型にしないと精度が駄目でした。
1
2
  ```c
2
- float Frame_Scene_Root[16]={
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
- float Frame_body[16]={
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
- float Frame[16]={
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
- float temp[16];
26
+ double temp[16];
26
27
 
27
- void Ranks( float *temp ,float* a, float *b)
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

文の改善

2020/09/19 07:06

投稿

txty
txty

スコア304

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すればいいのか教えてください