rmath3d 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 480f9d7cfa725618252ced196bead41f187d86c2
4
- data.tar.gz: cfb9c4dfd3027b08020bb25be79debf32c329efb
3
+ metadata.gz: dc8123d1ad73cb760f30d7c6a3496f13ad54fcb1
4
+ data.tar.gz: 41ae8b2437dfe3fdc2b0ec6c01fc511a0e5ada20
5
5
  SHA512:
6
- metadata.gz: 585ec81811bbb4baa2835fca142a78d92674be01ef232bed8f3d021148c22586deb8fa0858e89d6a5dd19019cfa814c7b365857b488c358cdeb28c65d3539e88
7
- data.tar.gz: 28ba4c0c9c30fee57d682ed96da605bf76a59c7d00d62609f4cf795c57808d94ac992af53625deaa8b08a1e091a01f7e38de4694a56b8aa6c3a74e1ea6c1b9ee
6
+ metadata.gz: 39615da4c1208ebfdb06644ce2a6612ed88172afc334c36eb9a08b20211c3fb89359bcdb4e348924fd09fad057745397774be8f3de00e211373a98c6cc6ab11c
7
+ data.tar.gz: 7e6b01b7f44b95ccb8f2c8a9419d74f730ef1bd6eac59afa7dc128c1e5cfa6ffb171cd151957a8d6d41a4fcbc987ebae63487bb0b30c5299513c936c7179f205
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ 2017-07-22 vaiorabbit <http://twitter.com/vaiorabbit>
2
+
3
+ * Added 'Integer' type for argument type branching (constant ::Fixnum is deprecated since ruby 2.4).
4
+
1
5
  2015-08-23 vaiorabbit <http://twitter.com/vaiorabbit>
2
6
 
3
7
  * rmath3d.c (def ==): Removed control path returning Qnil.
@@ -1,5 +1,5 @@
1
1
  rmath3d : Ruby math module for 3D Applications
2
- Copyright (c) 2008-2015 vaiorabbit <http://twitter.com/vaiorabbit>
2
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
3
3
 
4
4
  This software is provided 'as-is', without any express or implied
5
5
  warranty. In no event will the authors be held liable for any damages
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  rmath3d is a math module for 3D game programming and computer graphics.
6
6
 
7
- * Last Update: Aug 23, 2015
7
+ * Last Update: Jul 22, 2017
8
8
  * Since: Jul 20, 2008
9
9
 
10
10
  ## Features ##
@@ -1,5 +1,5 @@
1
- #ifndef RMATH_H_INCLUDED
2
- #define RMATH_H_INCLUDED
1
+ #ifndef RMATH3D_H_INCLUDED
2
+ #define RMATH3D_H_INCLUDED
3
3
 
4
4
  #include "RType.h"
5
5
  #include "RVec2.h"
@@ -14,7 +14,7 @@
14
14
 
15
15
  /*
16
16
  RMath : Ruby math module for 3D Applications
17
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
17
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
18
18
 
19
19
  This software is provided 'as-is', without any express or implied
20
20
  warranty. In no event will the authors be held liable for any damages
@@ -232,7 +232,7 @@ RMtx2Scale( RMtx2* out, const RMtx2* m, rmReal f )
232
232
 
233
233
  /*
234
234
  RMath : Ruby math module for 3D Applications
235
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
235
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
236
236
 
237
237
  This software is provided 'as-is', without any express or implied
238
238
  warranty. In no event will the authors be held liable for any damages
@@ -65,7 +65,7 @@ void RMtx2Scale( RMtx2* out, const RMtx2* m, rmReal f );
65
65
 
66
66
  /*
67
67
  RMath : Ruby math module for 3D Applications
68
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
68
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
69
69
 
70
70
  This software is provided 'as-is', without any express or implied
71
71
  warranty. In no event will the authors be held liable for any damages
@@ -347,7 +347,7 @@ RMtx3Scale( RMtx3* out, const RMtx3* m, rmReal f )
347
347
 
348
348
  /*
349
349
  RMath : Ruby math module for 3D Applications
350
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
350
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
351
351
 
352
352
  This software is provided 'as-is', without any express or implied
353
353
  warranty. In no event will the authors be held liable for any damages
@@ -72,7 +72,7 @@ void RMtx3Scale( RMtx3* out, const RMtx3* m, rmReal f );
72
72
 
73
73
  /*
74
74
  RMath : Ruby math module for 3D Applications
75
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
75
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
76
76
 
77
77
  This software is provided 'as-is', without any express or implied
78
78
  warranty. In no event will the authors be held liable for any damages
@@ -549,7 +549,7 @@ RMtx4OrthoOffCenterRH( RMtx4* out, rmReal left, rmReal right, rmReal bottom, rmR
549
549
 
550
550
  /*
551
551
  RMath : Ruby math module for 3D Applications
552
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
552
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
553
553
 
554
554
  This software is provided 'as-is', without any express or implied
555
555
  warranty. In no event will the authors be held liable for any damages
@@ -87,7 +87,7 @@ void RMtx4OrthoOffCenterRH( RMtx4* out, rmReal left, rmReal right, rmReal bot
87
87
 
88
88
  /*
89
89
  RMath : Ruby math module for 3D Applications
90
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
90
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
91
91
 
92
92
  This software is provided 'as-is', without any express or implied
93
93
  warranty. In no event will the authors be held liable for any damages
@@ -344,7 +344,7 @@ RQuatToAxisAngle( const RQuat* in, struct RVec3* axis, rmReal* radian )
344
344
 
345
345
  /*
346
346
  RMath : Ruby math module for 3D Applications
347
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
347
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
348
348
 
349
349
  This software is provided 'as-is', without any express or implied
350
350
  warranty. In no event will the authors be held liable for any damages
@@ -69,7 +69,7 @@ void RQuatToAxisAngle( const RQuat* in, struct RVec3* axis, rmReal* radian );
69
69
 
70
70
  /*
71
71
  RMath : Ruby math module for 3D Applications
72
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
72
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
73
73
 
74
74
  This software is provided 'as-is', without any express or implied
75
75
  warranty. In no event will the authors be held liable for any damages
@@ -53,7 +53,7 @@ typedef double rmReal;
53
53
 
54
54
  /*
55
55
  RMath : Ruby math module for 3D Applications
56
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
56
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
57
57
 
58
58
  This software is provided 'as-is', without any express or implied
59
59
  warranty. In no event will the authors be held liable for any damages
@@ -144,7 +144,7 @@ RVec2Transform( RVec2* out, const RMtx2* m, const RVec2* in )
144
144
 
145
145
  /*
146
146
  RMath : Ruby math module for 3D Applications
147
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>.
147
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>.
148
148
 
149
149
  This software is provided 'as-is', without any express or implied
150
150
  warranty. In no event will the authors be held liable for any damages
@@ -57,7 +57,7 @@ void RVec2Transform( struct RVec2* out, const struct RMtx2* m, const RVec2* i
57
57
 
58
58
  /*
59
59
  RMath : Ruby math module for 3D Applications
60
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
60
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
61
61
 
62
62
  This software is provided 'as-is', without any express or implied
63
63
  warranty. In no event will the authors be held liable for any damages
@@ -262,7 +262,7 @@ RVec3TransformByQuaternion( RVec3* out, const struct RQuat* q, const RVec3* in )
262
262
 
263
263
  /*
264
264
  RMath : Ruby math module for 3D Applications
265
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>.
265
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>.
266
266
 
267
267
  This software is provided 'as-is', without any express or implied
268
268
  warranty. In no event will the authors be held liable for any damages
@@ -66,7 +66,7 @@ void RVec3TransformByQuaternion( RVec3* out, const struct RQuat* q, const RVe
66
66
 
67
67
  /*
68
68
  RMath : Ruby math module for 3D Applications
69
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
69
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
70
70
 
71
71
  This software is provided 'as-is', without any express or implied
72
72
  warranty. In no event will the authors be held liable for any damages
@@ -192,7 +192,7 @@ RVec4TransformTransposed( RVec4* out, const struct RMtx4* m, const RVec4* in )
192
192
 
193
193
  /*
194
194
  RMath : Ruby math module for 3D Applications
195
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
195
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
196
196
 
197
197
  This software is provided 'as-is', without any express or implied
198
198
  warranty. In no event will the authors be held liable for any damages
@@ -63,7 +63,7 @@ void RVec4TransformTransposed( RVec4* out, const struct RMtx4* m, const RVec4
63
63
 
64
64
  /*
65
65
  RMath : Ruby math module for 3D Applications
66
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
66
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
67
67
 
68
68
  This software is provided 'as-is', without any express or implied
69
69
  warranty. In no event will the authors be held liable for any damages
@@ -200,45 +200,32 @@ RMtx2_initialize( int argc, VALUE* argv, VALUE self )
200
200
  case 1:
201
201
  {
202
202
  VALUE arg = argv[0];
203
- switch ( TYPE( arg ) )
204
- {
205
- case T_FIXNUM:
206
- case T_FLOAT:
207
- {
203
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
208
204
  /* convert to float */
209
205
  rmReal f = NUM2DBL( arg );
210
206
  RMtx2SetElements( v,
211
207
  f,f,
212
208
  f,f );
213
209
  return self;
214
- }
215
- break;
216
-
217
- case T_DATA:
218
- {
219
- if ( IsRMtx2(arg) )
220
- {
221
- /* Copy Constructor */
222
- RMtx2* other;
223
- TypedData_Get_Struct( arg, RMtx2, &RMtx2_type, other );
224
- RMtx2Copy( v, other );
225
- return self;
226
- }
227
- else
210
+ } else {
211
+ if ( TYPE( arg ) == T_DATA ) {
212
+ if ( IsRMtx2(arg) ) {
213
+ /* Copy Constructor */
214
+ RMtx2* other;
215
+ TypedData_Get_Struct( arg, RMtx2, &RMtx2_type, other );
216
+ RMtx2Copy( v, other );
217
+ return self;
218
+ } else {
219
+ return Qnil;
220
+ }
221
+ } else {
222
+ rb_raise( rb_eTypeError,
223
+ "RMtx2_new : Unknown type %s.",
224
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
225
+ );
228
226
  return Qnil;
227
+ }
229
228
  }
230
- break;
231
-
232
- default:
233
- {
234
- rb_raise( rb_eTypeError,
235
- "RMtx2_new : Unknown type %s.",
236
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
237
- );
238
- return Qnil;
239
- }
240
- break;
241
- } /* End : switch ( TYPE( arg ) ) */
242
229
  } /* End : case 1 */
243
230
  break;
244
231
 
@@ -251,18 +238,10 @@ RMtx2_initialize( int argc, VALUE* argv, VALUE self )
251
238
  for ( col = 0; col < 2; ++col )
252
239
  {
253
240
  int i = 2*row + col;
254
- switch ( TYPE( argv[i] ) )
255
- {
256
- case T_FIXNUM:
257
- case T_FLOAT:
258
- {
241
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
259
242
  rmReal f = NUM2DBL( argv[i] );
260
243
  RMtx2SetElement( v, row, col, f );
261
- }
262
- break;
263
-
264
- default:
265
- {
244
+ } else {
266
245
  rb_raise( rb_eTypeError,
267
246
  "RMtx2_new : Unknown type %s. at arg %d",
268
247
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -270,8 +249,6 @@ RMtx2_initialize( int argc, VALUE* argv, VALUE self )
270
249
  );
271
250
  return Qnil;
272
251
  }
273
- break;
274
- }
275
252
  } /* End : for ( col = 0; col < 2; ++col ) */
276
253
  } /* End : for ( row = 0; row < 2; ++row ) */
277
254
 
@@ -371,21 +348,12 @@ RMtx2_coerce( VALUE self, VALUE other )
371
348
  RMtx2* v = NULL;
372
349
  TypedData_Get_Struct( self, RMtx2, &RMtx2_type, v );
373
350
 
374
- switch( TYPE(other) )
375
- {
376
- case T_FLOAT:
377
- case T_FIXNUM:
378
- case T_BIGNUM:
379
- {
351
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
380
352
  /* 'other (op) RMtx2'
381
353
  * -> try again as 'RMtx2 (op) other'
382
354
  */
383
355
  return rb_ary_new3( 2, self, other );
384
- }
385
- break;
386
-
387
- default:
388
- {
356
+ } else {
389
357
  rb_raise( rb_eTypeError,
390
358
  "%s can't be coerced into %s",
391
359
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -393,8 +361,6 @@ RMtx2_coerce( VALUE self, VALUE other )
393
361
  );
394
362
  return Qnil;
395
363
  }
396
- break;
397
- }
398
364
  }
399
365
 
400
366
  /*
@@ -1114,11 +1080,7 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1114
1080
  case 1:
1115
1081
  {
1116
1082
  VALUE arg = argv[0];
1117
- switch ( TYPE( arg ) )
1118
- {
1119
- case T_FIXNUM:
1120
- case T_FLOAT:
1121
- {
1083
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
1122
1084
  /* convert to float */
1123
1085
  rmReal f = NUM2DBL( arg );
1124
1086
  RMtx3SetElements( v,
@@ -1126,34 +1088,25 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1126
1088
  f,f,f,
1127
1089
  f,f,f );
1128
1090
  return self;
1129
- }
1130
- break;
1131
-
1132
- case T_DATA:
1133
- {
1134
- if ( IsRMtx3(arg) )
1135
- {
1136
- /* Copy Constructor */
1137
- RMtx3* other;
1138
- TypedData_Get_Struct( arg , RMtx3, &RMtx3_type, other );
1139
- RMtx3Copy( v, other );
1140
- return self;
1141
- }
1142
- else
1091
+ } else {
1092
+ if ( TYPE( arg ) == T_DATA ) {
1093
+ if ( IsRMtx3(arg) ) {
1094
+ /* Copy Constructor */
1095
+ RMtx3* other;
1096
+ TypedData_Get_Struct( arg , RMtx3, &RMtx3_type, other );
1097
+ RMtx3Copy( v, other );
1098
+ return self;
1099
+ } else {
1100
+ return Qnil;
1101
+ }
1102
+ } else {
1103
+ rb_raise( rb_eTypeError,
1104
+ "RMtx3_new : Unknown type %s.",
1105
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
1106
+ );
1143
1107
  return Qnil;
1108
+ }
1144
1109
  }
1145
- break;
1146
-
1147
- default:
1148
- {
1149
- rb_raise( rb_eTypeError,
1150
- "RMtx3_new : Unknown type %s.",
1151
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
1152
- );
1153
- return Qnil;
1154
- }
1155
- break;
1156
- } /* End : switch ( TYPE( arg ) ) */
1157
1110
  } /* End : case 1 */
1158
1111
  break;
1159
1112
 
@@ -1166,18 +1119,10 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1166
1119
  for ( col = 0; col < 3; ++col )
1167
1120
  {
1168
1121
  int i = 3*row + col;
1169
- switch ( TYPE( argv[i] ) )
1170
- {
1171
- case T_FIXNUM:
1172
- case T_FLOAT:
1173
- {
1122
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
1174
1123
  rmReal f = NUM2DBL( argv[i] );
1175
1124
  RMtx3SetElement( v, row, col, f );
1176
- }
1177
- break;
1178
-
1179
- default:
1180
- {
1125
+ } else {
1181
1126
  rb_raise( rb_eTypeError,
1182
1127
  "RMtx3_new : Unknown type %s. at arg %d",
1183
1128
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -1185,8 +1130,6 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1185
1130
  );
1186
1131
  return Qnil;
1187
1132
  }
1188
- break;
1189
- }
1190
1133
  } /* End : for ( col = 0; col < 3; ++col ) */
1191
1134
  } /* End : for ( row = 0; row < 3; ++row ) */
1192
1135
 
@@ -1286,21 +1229,12 @@ RMtx3_coerce( VALUE self, VALUE other )
1286
1229
  RMtx3* v = NULL;
1287
1230
  TypedData_Get_Struct( self, RMtx3, &RMtx3_type, v );
1288
1231
 
1289
- switch( TYPE(other) )
1290
- {
1291
- case T_FLOAT:
1292
- case T_FIXNUM:
1293
- case T_BIGNUM:
1294
- {
1232
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
1295
1233
  /* 'other (op) RMtx3'
1296
1234
  * -> try again as 'RMtx3 (op) other'
1297
1235
  */
1298
1236
  return rb_ary_new3( 2, self, other );
1299
- }
1300
- break;
1301
-
1302
- default:
1303
- {
1237
+ } else {
1304
1238
  rb_raise( rb_eTypeError,
1305
1239
  "%s can't be coerced into %s",
1306
1240
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -1308,8 +1242,6 @@ RMtx3_coerce( VALUE self, VALUE other )
1308
1242
  );
1309
1243
  return Qnil;
1310
1244
  }
1311
- break;
1312
- }
1313
1245
  }
1314
1246
 
1315
1247
  /*
@@ -2235,11 +2167,7 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2235
2167
  case 1:
2236
2168
  {
2237
2169
  VALUE arg = argv[0];
2238
- switch ( TYPE( arg ) )
2239
- {
2240
- case T_FIXNUM:
2241
- case T_FLOAT:
2242
- {
2170
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
2243
2171
  /* convert to float */
2244
2172
  rmReal f = NUM2DBL( arg );
2245
2173
  RMtx4SetElements( v,
@@ -2248,34 +2176,25 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2248
2176
  f,f,f,f,
2249
2177
  f,f,f,f );
2250
2178
  return self;
2251
- }
2252
- break;
2253
-
2254
- case T_DATA:
2255
- {
2256
- if ( IsRMtx4(arg) )
2257
- {
2258
- /* Copy Constructor */
2259
- RMtx4* other;
2260
- TypedData_Get_Struct( arg , RMtx4, &RMtx4_type, other );
2261
- RMtx4Copy( v, other );
2262
- return self;
2263
- }
2264
- else
2179
+ } else {
2180
+ if ( TYPE( arg ) == T_DATA ) {
2181
+ if ( IsRMtx4(arg) ) {
2182
+ /* Copy Constructor */
2183
+ RMtx4* other;
2184
+ TypedData_Get_Struct( arg , RMtx4, &RMtx4_type, other );
2185
+ RMtx4Copy( v, other );
2186
+ return self;
2187
+ } else {
2188
+ return Qnil;
2189
+ }
2190
+ } else {
2191
+ rb_raise( rb_eTypeError,
2192
+ "RMtx4_new : Unknown type %s.",
2193
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
2194
+ );
2265
2195
  return Qnil;
2196
+ }
2266
2197
  }
2267
- break;
2268
-
2269
- default:
2270
- {
2271
- rb_raise( rb_eTypeError,
2272
- "RMtx4_new : Unknown type %s.",
2273
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
2274
- );
2275
- return Qnil;
2276
- }
2277
- break;
2278
- } /* End : switch ( TYPE( arg ) ) */
2279
2198
  } /* End : case 1 */
2280
2199
  break;
2281
2200
 
@@ -2288,18 +2207,10 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2288
2207
  for ( col = 0; col < 4; ++col )
2289
2208
  {
2290
2209
  int i = 4*row + col;
2291
- switch ( TYPE( argv[i] ) )
2292
- {
2293
- case T_FIXNUM:
2294
- case T_FLOAT:
2295
- {
2210
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
2296
2211
  rmReal f = NUM2DBL( argv[i] );
2297
2212
  RMtx4SetElement( v, row, col, f );
2298
- }
2299
- break;
2300
-
2301
- default:
2302
- {
2213
+ } else {
2303
2214
  rb_raise( rb_eTypeError,
2304
2215
  "RMtx4_new : Unknown type %s. at arg %d",
2305
2216
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -2307,8 +2218,6 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2307
2218
  );
2308
2219
  return Qnil;
2309
2220
  }
2310
- break;
2311
- }
2312
2221
  } /* End : for ( col = 0; col < 4; ++col ) */
2313
2222
  } /* End : for ( row = 0; row < 4; ++row ) */
2314
2223
 
@@ -2410,21 +2319,12 @@ RMtx4_coerce( VALUE self, VALUE other )
2410
2319
  RMtx4* v = NULL;
2411
2320
  TypedData_Get_Struct( self, RMtx4, &RMtx4_type, v );
2412
2321
 
2413
- switch( TYPE(other) )
2414
- {
2415
- case T_FLOAT:
2416
- case T_FIXNUM:
2417
- case T_BIGNUM:
2418
- {
2322
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
2419
2323
  /* 'other (op) RMtx4'
2420
2324
  * -> try again as 'RMtx4 (op) other'
2421
2325
  */
2422
2326
  return rb_ary_new3( 2, self, other );
2423
- }
2424
- break;
2425
-
2426
- default:
2427
- {
2327
+ } else {
2428
2328
  rb_raise( rb_eTypeError,
2429
2329
  "%s can't be coerced into %s",
2430
2330
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -2432,8 +2332,6 @@ RMtx4_coerce( VALUE self, VALUE other )
2432
2332
  );
2433
2333
  return Qnil;
2434
2334
  }
2435
- break;
2436
- }
2437
2335
  }
2438
2336
 
2439
2337
  /*
@@ -3784,43 +3682,30 @@ RQuat_initialize( int argc, VALUE* argv, VALUE self )
3784
3682
  case 1:
3785
3683
  {
3786
3684
  VALUE arg = argv[0];
3787
- switch ( TYPE( arg ) )
3788
- {
3789
- case T_FIXNUM:
3790
- case T_FLOAT:
3791
- {
3685
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
3792
3686
  /* convert to float */
3793
3687
  rmReal f = NUM2DBL( arg );
3794
3688
  RQuatSetElements( v, f,f,f,f );
3795
3689
  return self;
3796
- }
3797
- break;
3798
-
3799
- case T_DATA:
3800
- {
3801
- if ( IsRQuat(arg) )
3802
- {
3803
- /* Copy Constructor */
3804
- RQuat* other;
3805
- TypedData_Get_Struct( arg , RQuat, &RQuat_type, other );
3806
- RQuatSetElements( v, other->x, other->y, other->z, other->w );
3807
- return self;
3808
- }
3809
- else
3690
+ } else {
3691
+ if ( TYPE( arg ) == T_DATA ) {
3692
+ if ( IsRQuat(arg) ) {
3693
+ /* Copy Constructor */
3694
+ RQuat* other;
3695
+ TypedData_Get_Struct( arg , RQuat, &RQuat_type, other );
3696
+ RQuatSetElements( v, other->x, other->y, other->z, other->w );
3697
+ return self;
3698
+ } else {
3699
+ return Qnil;
3700
+ }
3701
+ } else {
3702
+ rb_raise( rb_eTypeError,
3703
+ "RQuat_new : Unknown type %s.",
3704
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
3705
+ );
3810
3706
  return Qnil;
3707
+ }
3811
3708
  }
3812
- break;
3813
-
3814
- default:
3815
- {
3816
- rb_raise( rb_eTypeError,
3817
- "RQuat_new : Unknown type %s.",
3818
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
3819
- );
3820
- return Qnil;
3821
- }
3822
- break;
3823
- } /* End : switch ( TYPE( arg ) ) */
3824
3709
  } /* End : case 1 */
3825
3710
  break;
3826
3711
 
@@ -3830,18 +3715,10 @@ RQuat_initialize( int argc, VALUE* argv, VALUE self )
3830
3715
  int i;
3831
3716
  for ( i = 0; i < argc; ++i )
3832
3717
  {
3833
- switch ( TYPE( argv[i] ) )
3834
- {
3835
- case T_FIXNUM:
3836
- case T_FLOAT:
3837
- {
3718
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
3838
3719
  rmReal f = NUM2DBL( argv[i] );
3839
3720
  v->e[i] = f;
3840
- }
3841
- break;
3842
-
3843
- default:
3844
- {
3721
+ } else {
3845
3722
  rb_raise( rb_eTypeError,
3846
3723
  "RQuat_new : Unknown type %s. at arg %d",
3847
3724
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -3849,8 +3726,6 @@ RQuat_initialize( int argc, VALUE* argv, VALUE self )
3849
3726
  );
3850
3727
  return Qnil;
3851
3728
  }
3852
- break;
3853
- }
3854
3729
  } /* End : for ( i = 0; i < argc; ++i ) */
3855
3730
 
3856
3731
  return self;
@@ -3936,21 +3811,12 @@ RQuat_coerce( VALUE self, VALUE other )
3936
3811
  RQuat* v = NULL;
3937
3812
  TypedData_Get_Struct( self, RQuat, &RQuat_type, v );
3938
3813
 
3939
- switch( TYPE(other) )
3940
- {
3941
- case T_FLOAT:
3942
- case T_FIXNUM:
3943
- case T_BIGNUM:
3944
- {
3814
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
3945
3815
  /* 'other (op) RQuat'
3946
3816
  * -> try again as 'RQuat (op) other'
3947
3817
  */
3948
3818
  return rb_ary_new3( 2, self, other );
3949
- }
3950
- break;
3951
-
3952
- default:
3953
- {
3819
+ } else {
3954
3820
  rb_raise( rb_eTypeError,
3955
3821
  "%s can't be coerced into %s",
3956
3822
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -3958,8 +3824,6 @@ RQuat_coerce( VALUE self, VALUE other )
3958
3824
  );
3959
3825
  return Qnil;
3960
3826
  }
3961
- break;
3962
- }
3963
3827
  }
3964
3828
 
3965
3829
  /*
@@ -4506,27 +4370,18 @@ RQuat_op_binary_mult( VALUE self, VALUE other )
4506
4370
  }
4507
4371
  else
4508
4372
  {
4509
- switch( TYPE(other) )
4510
- {
4511
- case T_FIXNUM:
4512
- case T_FLOAT:
4513
- {
4373
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
4514
4374
  f = NUM2DBL( other );
4515
4375
  RQuatScale( &result, v, f );
4516
4376
 
4517
4377
  return RQuat_from_source( &result );
4518
- }
4519
- break;
4520
-
4521
- default:
4522
- {
4378
+ } else {
4523
4379
  rb_raise( rb_eTypeError,
4524
4380
  "RQuat#* : Unknown type %s.",
4525
4381
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
4526
4382
  );
4527
4383
  return Qnil;
4528
4384
  }
4529
- } /* End : switch( TYPE(other) ) */
4530
4385
  }
4531
4386
  }
4532
4387
 
@@ -4640,7 +4495,7 @@ RQuat_op_assign_mult( VALUE self, VALUE other )
4640
4495
  else
4641
4496
  {
4642
4497
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
4643
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
4498
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
4644
4499
  {
4645
4500
  rb_raise( rb_eTypeError,
4646
4501
  "RQuat#mul! : Unknown type %s.",
@@ -4785,43 +4640,30 @@ RVec2_initialize( int argc, VALUE* argv, VALUE self )
4785
4640
  case 1:
4786
4641
  {
4787
4642
  VALUE arg = argv[0];
4788
- switch ( TYPE( arg ) )
4789
- {
4790
- case T_FIXNUM:
4791
- case T_FLOAT:
4792
- {
4643
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
4793
4644
  /* convert to float */
4794
4645
  rmReal f = NUM2DBL( arg );
4795
4646
  RVec2SetElements( v, f,f );
4796
4647
  return self;
4797
- }
4798
- break;
4799
-
4800
- case T_DATA:
4801
- {
4802
- if ( IsRVec2(arg) )
4803
- {
4804
- /* Copy Constructor */
4805
- RVec2* other;
4806
- TypedData_Get_Struct( arg , RVec2, &RVec2_type, other );
4807
- RVec2SetElements( v, other->x, other->y );
4808
- return self;
4809
- }
4810
- else
4648
+ } else {
4649
+ if ( TYPE( arg ) == T_DATA ) {
4650
+ if ( IsRVec2(arg) ) {
4651
+ /* Copy Constructor */
4652
+ RVec2* other;
4653
+ TypedData_Get_Struct( arg , RVec2, &RVec2_type, other );
4654
+ RVec2SetElements( v, other->x, other->y );
4655
+ return self;
4656
+ } else {
4657
+ return Qnil;
4658
+ }
4659
+ } else {
4660
+ rb_raise( rb_eTypeError,
4661
+ "RVec2_new : Unknown type %s.",
4662
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
4663
+ );
4811
4664
  return Qnil;
4665
+ }
4812
4666
  }
4813
- break;
4814
-
4815
- default:
4816
- {
4817
- rb_raise( rb_eTypeError,
4818
- "RVec2_new : Unknown type %s.",
4819
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
4820
- );
4821
- return Qnil;
4822
- }
4823
- break;
4824
- } /* End : switch ( TYPE( arg ) ) */
4825
4667
  } /* End : case 1 */
4826
4668
  break;
4827
4669
 
@@ -4831,18 +4673,10 @@ RVec2_initialize( int argc, VALUE* argv, VALUE self )
4831
4673
  int i;
4832
4674
  for ( i = 0; i < argc; ++i )
4833
4675
  {
4834
- switch ( TYPE( argv[i] ) )
4835
- {
4836
- case T_FIXNUM:
4837
- case T_FLOAT:
4838
- {
4676
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
4839
4677
  rmReal f = NUM2DBL( argv[i] );
4840
4678
  v->e[i] = f;
4841
- }
4842
- break;
4843
-
4844
- default:
4845
- {
4679
+ } else {
4846
4680
  rb_raise( rb_eTypeError,
4847
4681
  "RVec2_new : Unknown type %s. at arg %d",
4848
4682
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -4850,8 +4684,6 @@ RVec2_initialize( int argc, VALUE* argv, VALUE self )
4850
4684
  );
4851
4685
  return Qnil;
4852
4686
  }
4853
- break;
4854
- }
4855
4687
  } /* End : for ( i = 0; i < argc; ++i ) */
4856
4688
 
4857
4689
  return self;
@@ -4935,21 +4767,12 @@ RVec2_coerce( VALUE self, VALUE other )
4935
4767
  RVec2* v = NULL;
4936
4768
  TypedData_Get_Struct( self, RVec2, &RVec2_type, v );
4937
4769
 
4938
- switch( TYPE(other) )
4939
- {
4940
- case T_FLOAT:
4941
- case T_FIXNUM:
4942
- case T_BIGNUM:
4943
- {
4770
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
4944
4771
  /* 'other (op) RVec2'
4945
4772
  * -> try again as 'RVec2 (op) other'
4946
4773
  */
4947
4774
  return rb_ary_new3( 2, self, other );
4948
- }
4949
- break;
4950
-
4951
- default:
4952
- {
4775
+ } else {
4953
4776
  rb_raise( rb_eTypeError,
4954
4777
  "%s can't be coerced into %s",
4955
4778
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -4957,8 +4780,6 @@ RVec2_coerce( VALUE self, VALUE other )
4957
4780
  );
4958
4781
  return Qnil;
4959
4782
  }
4960
- break;
4961
- }
4962
4783
  }
4963
4784
 
4964
4785
  /*
@@ -5318,28 +5139,19 @@ RVec2_op_binary_mult( VALUE self, VALUE other )
5318
5139
  RVec2 result;
5319
5140
  rmReal f;
5320
5141
 
5321
- switch( TYPE(other) )
5322
- {
5323
- case T_FIXNUM:
5324
- case T_FLOAT:
5325
- {
5142
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
5326
5143
  TypedData_Get_Struct( self, RVec2, &RVec2_type, v );
5327
5144
  f = NUM2DBL( other );
5328
5145
  RVec2Scale( &result, v, f );
5329
5146
 
5330
5147
  return RVec2_from_source( &result );
5331
- }
5332
- break;
5333
-
5334
- default:
5335
- {
5148
+ } else {
5336
5149
  rb_raise( rb_eTypeError,
5337
5150
  "RVec2#* : Unknown type %s.",
5338
5151
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
5339
5152
  );
5340
5153
  return Qnil;
5341
5154
  }
5342
- } /* End : switch( TYPE(other) ) */
5343
5155
  }
5344
5156
 
5345
5157
  /*
@@ -5441,7 +5253,7 @@ RVec2_op_assign_mult( VALUE self, VALUE other )
5441
5253
  rmReal f;
5442
5254
 
5443
5255
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
5444
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
5256
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
5445
5257
  {
5446
5258
  rb_raise( rb_eTypeError,
5447
5259
  "RVec2#*= : Unknown type %s.",
@@ -5528,43 +5340,30 @@ RVec3_initialize( int argc, VALUE* argv, VALUE self )
5528
5340
  case 1:
5529
5341
  {
5530
5342
  VALUE arg = argv[0];
5531
- switch ( TYPE( arg ) )
5532
- {
5533
- case T_FIXNUM:
5534
- case T_FLOAT:
5535
- {
5343
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
5536
5344
  /* convert to float */
5537
5345
  rmReal f = NUM2DBL( arg );
5538
5346
  RVec3SetElements( v, f,f,f );
5539
5347
  return self;
5540
- }
5541
- break;
5542
-
5543
- case T_DATA:
5544
- {
5545
- if ( IsRVec3(arg) )
5546
- {
5547
- /* Copy Constructor */
5548
- RVec3* other;
5549
- TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
5550
- RVec3SetElements( v, other->x, other->y, other->z );
5551
- return self;
5552
- }
5553
- else
5554
- return Qnil;
5555
- }
5556
- break;
5557
-
5558
- default:
5559
- {
5348
+ } else {
5349
+ if ( TYPE( arg ) == T_DATA ) {
5350
+ if ( IsRVec3(arg) ) {
5351
+ /* Copy Constructor */
5352
+ RVec3* other;
5353
+ TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
5354
+ RVec3SetElements( v, other->x, other->y, other->z );
5355
+ return self;
5356
+ } else {
5357
+ return Qnil;
5358
+ }
5359
+ } else {
5560
5360
  rb_raise( rb_eTypeError,
5561
5361
  "RVec3_new : Unknown type %s.",
5562
5362
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
5563
5363
  );
5564
5364
  return Qnil;
5365
+ }
5565
5366
  }
5566
- break;
5567
- } /* End : switch ( TYPE( arg ) ) */
5568
5367
  } /* End : case 1 */
5569
5368
  break;
5570
5369
 
@@ -5574,18 +5373,10 @@ RVec3_initialize( int argc, VALUE* argv, VALUE self )
5574
5373
  int i;
5575
5374
  for ( i = 0; i < argc; ++i )
5576
5375
  {
5577
- switch ( TYPE( argv[i] ) )
5578
- {
5579
- case T_FIXNUM:
5580
- case T_FLOAT:
5581
- {
5376
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
5582
5377
  rmReal f = NUM2DBL( argv[i] );
5583
5378
  v->e[i] = f;
5584
- }
5585
- break;
5586
-
5587
- default:
5588
- {
5379
+ } else {
5589
5380
  rb_raise( rb_eTypeError,
5590
5381
  "RVec3_new : Unknown type %s. at arg %d",
5591
5382
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -5593,8 +5384,6 @@ RVec3_initialize( int argc, VALUE* argv, VALUE self )
5593
5384
  );
5594
5385
  return Qnil;
5595
5386
  }
5596
- break;
5597
- }
5598
5387
  } /* End : for ( i = 0; i < argc; ++i ) */
5599
5388
 
5600
5389
  return self;
@@ -5679,21 +5468,12 @@ RVec3_coerce( VALUE self, VALUE other )
5679
5468
  RVec3* v = NULL;
5680
5469
  TypedData_Get_Struct( self, RVec3, &RVec3_type, v );
5681
5470
 
5682
- switch( TYPE(other) )
5683
- {
5684
- case T_FLOAT:
5685
- case T_FIXNUM:
5686
- case T_BIGNUM:
5687
- {
5471
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
5688
5472
  /* 'other (op) RVec3'
5689
5473
  * -> try again as 'RVec3 (op) other'
5690
5474
  */
5691
5475
  return rb_ary_new3( 2, self, other );
5692
- }
5693
- break;
5694
-
5695
- default:
5696
- {
5476
+ } else {
5697
5477
  rb_raise( rb_eTypeError,
5698
5478
  "%s can't be coerced into %s",
5699
5479
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -5701,8 +5481,6 @@ RVec3_coerce( VALUE self, VALUE other )
5701
5481
  );
5702
5482
  return Qnil;
5703
5483
  }
5704
- break;
5705
- }
5706
5484
  }
5707
5485
 
5708
5486
  /*
@@ -6316,28 +6094,19 @@ RVec3_op_binary_mult( VALUE self, VALUE other )
6316
6094
  RVec3 result;
6317
6095
  rmReal f;
6318
6096
 
6319
- switch( TYPE(other) )
6320
- {
6321
- case T_FIXNUM:
6322
- case T_FLOAT:
6323
- {
6097
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
6324
6098
  TypedData_Get_Struct( self, RVec3, &RVec3_type, v );
6325
6099
  f = NUM2DBL( other );
6326
6100
  RVec3Scale( &result, v, f );
6327
6101
 
6328
6102
  return RVec3_from_source( &result );
6329
- }
6330
- break;
6331
-
6332
- default:
6333
- {
6103
+ } else {
6334
6104
  rb_raise( rb_eTypeError,
6335
6105
  "RVec3#* : Unknown type %s.",
6336
6106
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
6337
6107
  );
6338
6108
  return Qnil;
6339
6109
  }
6340
- } /* End : switch( TYPE(other) ) */
6341
6110
  }
6342
6111
 
6343
6112
  /*
@@ -6439,7 +6208,7 @@ RVec3_op_assign_mult( VALUE self, VALUE other )
6439
6208
  rmReal f;
6440
6209
 
6441
6210
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
6442
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
6211
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
6443
6212
  {
6444
6213
  rb_raise( rb_eTypeError,
6445
6214
  "RVec3#*= : Unknown type %s.",
@@ -6526,51 +6295,36 @@ RVec4_initialize( int argc, VALUE* argv, VALUE self )
6526
6295
  case 1:
6527
6296
  {
6528
6297
  VALUE arg = argv[0];
6529
- switch ( TYPE( arg ) )
6530
- {
6531
- case T_FIXNUM:
6532
- case T_FLOAT:
6533
- {
6298
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
6534
6299
  /* convert to float */
6535
6300
  rmReal f = NUM2DBL( arg );
6536
6301
  RVec4SetElements( v, f,f,f,f );
6537
6302
  return self;
6538
- }
6539
- break;
6540
-
6541
- case T_DATA:
6542
- {
6543
- if ( IsRVec3(arg) )
6544
- {
6545
- /* Create from RVec3 */
6546
- RVec3* other;
6547
- TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
6548
- RVec4SetElements( v, other->x, other->y, other->z, 0.0f );
6549
- return self;
6550
- }
6551
- else if ( IsRVec4(arg) )
6552
- {
6553
- /* Copy Constructor */
6554
- RVec4* other;
6555
- TypedData_Get_Struct( arg , RVec4, &RVec4_type, other );
6556
- RVec4SetElements( v, other->x, other->y, other->z, other->w );
6557
- return self;
6558
- }
6559
- else
6303
+ } else {
6304
+ if ( TYPE( arg ) == T_DATA ) {
6305
+ if ( IsRVec3(arg) ) {
6306
+ /* Create from RVec3 */
6307
+ RVec3* other;
6308
+ TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
6309
+ RVec4SetElements( v, other->x, other->y, other->z, 0.0f );
6310
+ return self;
6311
+ } else if ( IsRVec4(arg) ) {
6312
+ /* Copy Constructor */
6313
+ RVec4* other;
6314
+ TypedData_Get_Struct( arg , RVec4, &RVec4_type, other );
6315
+ RVec4SetElements( v, other->x, other->y, other->z, other->w );
6316
+ return self;
6317
+ } else {
6318
+ return Qnil;
6319
+ }
6320
+ } else {
6321
+ rb_raise( rb_eTypeError,
6322
+ "RVec4_new : Unknown type %s.",
6323
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
6324
+ );
6560
6325
  return Qnil;
6326
+ }
6561
6327
  }
6562
- break;
6563
-
6564
- default:
6565
- {
6566
- rb_raise( rb_eTypeError,
6567
- "RVec4_new : Unknown type %s.",
6568
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
6569
- );
6570
- return Qnil;
6571
- }
6572
- break;
6573
- } /* End : switch ( TYPE( arg ) ) */
6574
6328
  } /* End : case 1 */
6575
6329
  break;
6576
6330
 
@@ -6580,18 +6334,10 @@ RVec4_initialize( int argc, VALUE* argv, VALUE self )
6580
6334
  int i;
6581
6335
  for ( i = 0; i < argc; ++i )
6582
6336
  {
6583
- switch ( TYPE( argv[i] ) )
6584
- {
6585
- case T_FIXNUM:
6586
- case T_FLOAT:
6587
- {
6337
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
6588
6338
  rmReal f = NUM2DBL( argv[i] );
6589
6339
  v->e[i] = f;
6590
- }
6591
- break;
6592
-
6593
- default:
6594
- {
6340
+ } else {
6595
6341
  rb_raise( rb_eTypeError,
6596
6342
  "RVec4_new : Unknown type %s. at arg %d",
6597
6343
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -6599,8 +6345,6 @@ RVec4_initialize( int argc, VALUE* argv, VALUE self )
6599
6345
  );
6600
6346
  return Qnil;
6601
6347
  }
6602
- break;
6603
- }
6604
6348
  } /* End : for ( i = 0; i < argc; ++i ) */
6605
6349
 
6606
6350
  return self;
@@ -6686,21 +6430,12 @@ RVec4_coerce( VALUE self, VALUE other )
6686
6430
  RVec4* v = NULL;
6687
6431
  TypedData_Get_Struct( self, RVec4, &RVec4_type, v );
6688
6432
 
6689
- switch( TYPE(other) )
6690
- {
6691
- case T_FLOAT:
6692
- case T_FIXNUM:
6693
- case T_BIGNUM:
6694
- {
6433
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
6695
6434
  /* 'other (op) RVec4'
6696
6435
  * -> try again as 'RVec4 (op) other'
6697
6436
  */
6698
6437
  return rb_ary_new3( 2, self, other );
6699
- }
6700
- break;
6701
-
6702
- default:
6703
- {
6438
+ } else {
6704
6439
  rb_raise( rb_eTypeError,
6705
6440
  "%s can't be coerced into %s",
6706
6441
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -6708,8 +6443,6 @@ RVec4_coerce( VALUE self, VALUE other )
6708
6443
  );
6709
6444
  return Qnil;
6710
6445
  }
6711
- break;
6712
- }
6713
6446
  }
6714
6447
 
6715
6448
  /*
@@ -7215,28 +6948,19 @@ RVec4_op_binary_mult( VALUE self, VALUE other )
7215
6948
  RVec4 result;
7216
6949
  rmReal f;
7217
6950
 
7218
- switch( TYPE(other) )
7219
- {
7220
- case T_FIXNUM:
7221
- case T_FLOAT:
7222
- {
6951
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
7223
6952
  TypedData_Get_Struct( self, RVec4, &RVec4_type, v );
7224
6953
  f = NUM2DBL( other );
7225
6954
  RVec4Scale( &result, v, f );
7226
6955
 
7227
6956
  return RVec4_from_source( &result );
7228
- }
7229
- break;
7230
-
7231
- default:
7232
- {
6957
+ } else {
7233
6958
  rb_raise( rb_eTypeError,
7234
6959
  "RVec4#* : Unknown type %s.",
7235
6960
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
7236
6961
  );
7237
6962
  return Qnil;
7238
6963
  }
7239
- } /* End : switch( TYPE(other) ) */
7240
6964
  }
7241
6965
 
7242
6966
  /*
@@ -7338,7 +7062,7 @@ RVec4_op_assign_mult( VALUE self, VALUE other )
7338
7062
  rmReal f;
7339
7063
 
7340
7064
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
7341
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
7065
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
7342
7066
  {
7343
7067
  rb_raise( rb_eTypeError,
7344
7068
  "RVec4#*= : Unknown type %s.",
@@ -7820,7 +7544,7 @@ Init_rmath3d()
7820
7544
 
7821
7545
  /*
7822
7546
  RMath : Ruby math module for 3D Applications
7823
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
7547
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
7824
7548
 
7825
7549
  This software is provided 'as-is', without any express or implied
7826
7550
  warranty. In no event will the authors be held liable for any damages