@@ -1247,13 +1247,11 @@ var_t *par_getm3() {
1247
1247
1248
1248
void m3combine (var_t * m , var_num_t nm [3 ][3 ]) {
1249
1249
var_num_t om [3 ][3 ];
1250
- int i , j ;
1251
- var_t * e ;
1252
1250
1253
1251
// copy m to om
1254
- for (i = 0 ; i < 3 ; i ++ ) {
1255
- for (j = 0 ; j < 3 ; j ++ ) {
1256
- e = v_elem (m , (i * 3 + j ));
1252
+ for (int i = 0 ; i < 3 ; i ++ ) {
1253
+ for (int j = 0 ; j < 3 ; j ++ ) {
1254
+ var_t * e = v_elem (m , (i * 3 + j ));
1257
1255
if (e -> type == V_NUM ) {
1258
1256
om [i ][j ] = e -> v .n ;
1259
1257
} else if (e -> type == V_INT ) {
@@ -1265,25 +1263,21 @@ void m3combine(var_t *m, var_num_t nm[3][3]) {
1265
1263
}
1266
1264
1267
1265
// combine
1268
- for (i = 0 ; i < 3 ; i ++ ) {
1269
- for (j = 0 ; j < 3 ; j ++ ) {
1270
- e = v_elem (m , (i * 3 + j ));
1266
+ for (int i = 0 ; i < 3 ; i ++ ) {
1267
+ for (int j = 0 ; j < 3 ; j ++ ) {
1268
+ var_t * e = v_elem (m , (i * 3 + j ));
1271
1269
if (e -> type != V_NUM ) {
1272
1270
v_free (e );
1273
1271
}
1274
1272
e -> type = V_NUM ;
1275
1273
e -> v .n = nm [i ][0 ] * om [0 ][j ] + nm [i ][1 ] * om [1 ][j ] + nm [i ][2 ] * om [2 ][j ];
1276
1274
}
1277
1275
}
1278
-
1279
1276
}
1280
1277
1281
- //
1282
1278
void m3ident (var_num_t m [3 ][3 ]) {
1283
- int i , j ;
1284
-
1285
- for (i = 0 ; i < 3 ; i ++ ) {
1286
- for (j = 0 ; j < 3 ; j ++ ) {
1279
+ for (int i = 0 ; i < 3 ; i ++ ) {
1280
+ for (int j = 0 ; j < 3 ; j ++ ) {
1287
1281
m [i ][j ] = (i == j ) ? 1.0 : 0.0 ;
1288
1282
}
1289
1283
}
@@ -1293,16 +1287,10 @@ void m3ident(var_num_t m[3][3]) {
1293
1287
// M3IDENT BYREF m3x3
1294
1288
//
1295
1289
void cmd_m3ident () {
1296
- var_t * m , * e ;
1297
- int i , j ;
1298
-
1299
- m = par_getm3 ();
1300
- if (prog_error ) {
1301
- return ;
1302
- }
1303
- for (i = 0 ; i < 3 ; i ++ ) {
1304
- for (j = 0 ; j < 3 ; j ++ ) {
1305
- e = v_elem (m , (i * 3 + j ));
1290
+ var_t * m = par_getm3 (); IF_PROG_ERR_RTN ;
1291
+ for (int i = 0 ; i < 3 ; i ++ ) {
1292
+ for (int j = 0 ; j < 3 ; j ++ ) {
1293
+ var_t * e = v_elem (m , (i * 3 + j ));
1306
1294
v_init (e );
1307
1295
e -> type = V_NUM ;
1308
1296
e -> v .n = (i == j ) ? 1.0 : 0.0 ;
@@ -1318,32 +1306,15 @@ void cmd_m3rotate() {
1318
1306
var_num_t angle , x = 0 , y = 0 , c , s ;
1319
1307
var_num_t matrix [3 ][3 ];
1320
1308
1321
- m = par_getm3 ();
1322
- if (prog_error ) {
1323
- return ;
1324
- }
1325
- par_getcomma ();
1326
- if (prog_error ) {
1327
- return ;
1328
- }
1329
- angle = par_getnum ();
1330
- if (prog_error ) {
1331
- return ;
1332
- }
1309
+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1310
+ par_getcomma (); IF_PROG_ERR_RTN ;
1311
+ angle = par_getnum (); IF_PROG_ERR_RTN ;
1312
+
1333
1313
if (code_peek () == kwTYPE_SEP ) {
1334
- par_getcomma ();
1335
- if (prog_error )
1336
- return ;
1337
- x = par_getnum ();
1338
- if (prog_error )
1339
- return ;
1340
- par_getcomma ();
1341
- if (prog_error )
1342
- return ;
1343
- y = par_getnum ();
1344
- if (prog_error ) {
1345
- return ;
1346
- }
1314
+ par_getcomma (); IF_PROG_ERR_RTN ;
1315
+ x = par_getnum (); IF_PROG_ERR_RTN ;
1316
+ par_getcomma (); IF_PROG_ERR_RTN ;
1317
+ y = par_getnum (); IF_PROG_ERR_RTN ;
1347
1318
}
1348
1319
1349
1320
c = cos (angle );
@@ -1367,33 +1338,15 @@ void cmd_m3scale() {
1367
1338
var_num_t x , y , fx , fy ;
1368
1339
var_num_t matrix [3 ][3 ];
1369
1340
1370
- m = par_getm3 ();
1371
- if (prog_error )
1372
- return ;
1373
- par_getcomma ();
1374
- if (prog_error )
1375
- return ;
1376
- x = par_getnum ();
1377
- if (prog_error )
1378
- return ;
1379
- par_getcomma ();
1380
- if (prog_error )
1381
- return ;
1382
- y = par_getnum ();
1383
- if (prog_error )
1384
- return ;
1385
- par_getcomma ();
1386
- if (prog_error )
1387
- return ;
1388
- fx = par_getnum ();
1389
- if (prog_error )
1390
- return ;
1391
- par_getcomma ();
1392
- if (prog_error )
1393
- return ;
1394
- fy = par_getnum ();
1395
- if (prog_error )
1396
- return ;
1341
+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1342
+ par_getcomma (); IF_PROG_ERR_RTN ;
1343
+ x = par_getnum (); IF_PROG_ERR_RTN ;
1344
+ par_getcomma (); IF_PROG_ERR_RTN ;
1345
+ y = par_getnum (); IF_PROG_ERR_RTN ;
1346
+ par_getcomma (); IF_PROG_ERR_RTN ;
1347
+ fx = par_getnum ();IF_PROG_ERR_RTN ;
1348
+ par_getcomma (); IF_PROG_ERR_RTN ;
1349
+ fy = par_getnum ();IF_PROG_ERR_RTN ;
1397
1350
1398
1351
m3ident (matrix );
1399
1352
matrix [0 ][0 ] = fx ;
@@ -1411,21 +1364,11 @@ void cmd_m3translate() {
1411
1364
var_num_t x , y ;
1412
1365
var_num_t matrix [3 ][3 ];
1413
1366
1414
- m = par_getm3 ();
1415
- if (prog_error )
1416
- return ;
1417
- par_getcomma ();
1418
- if (prog_error )
1419
- return ;
1420
- x = par_getnum ();
1421
- if (prog_error )
1422
- return ;
1423
- par_getcomma ();
1424
- if (prog_error )
1425
- return ;
1426
- y = par_getnum ();
1427
- if (prog_error )
1428
- return ;
1367
+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1368
+ par_getcomma (); IF_PROG_ERR_RTN ;
1369
+ x = par_getnum (); IF_PROG_ERR_RTN ;
1370
+ par_getcomma (); IF_PROG_ERR_RTN ;
1371
+ y = par_getnum (); IF_PROG_ERR_RTN ;
1429
1372
1430
1373
m3ident (matrix );
1431
1374
matrix [2 ][0 ] = x ;
@@ -1439,22 +1382,21 @@ void cmd_m3translate() {
1439
1382
void cmd_m3apply () {
1440
1383
var_t * m , * p , * e ;
1441
1384
var_num_t om [3 ][3 ], x , y ;
1442
- int i , j , count ;
1443
1385
1444
- m = par_getm3 ();
1445
- if (prog_error )
1446
- return ;
1447
- par_getcomma ();
1448
- if (prog_error )
1449
- return ;
1450
- p = par_getvarray ();
1451
- if (prog_error )
1386
+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1387
+ par_getcomma (); IF_PROG_ERR_RTN ;
1388
+ p = par_getvarray (); IF_PROG_ERR_RTN ;
1389
+
1390
+ if (!p || p -> type != V_ARRAY ) {
1391
+ err_varisnotarray ();
1452
1392
return ;
1453
- count = v_asize (p );
1393
+ }
1394
+
1395
+ int count = v_asize (p );
1454
1396
1455
1397
// copy m to om
1456
- for (i = 0 ; i < 3 ; i ++ ) {
1457
- for (j = 0 ; j < 3 ; j ++ ) {
1398
+ for (int i = 0 ; i < 3 ; i ++ ) {
1399
+ for (int j = 0 ; j < 3 ; j ++ ) {
1458
1400
e = v_elem (m , i * 3 + j );
1459
1401
om [i ][j ] = v_getreal (e );
1460
1402
}
@@ -1466,24 +1408,23 @@ void cmd_m3apply() {
1466
1408
int o ;
1467
1409
1468
1410
count = (v_asize (p ) >> 1 );
1469
- for (i = 0 ; i < count ; i ++ ) {
1411
+ for (int i = 0 ; i < count ; i ++ ) {
1470
1412
o = i << 1 ;
1471
1413
x = v_getreal (v_elem (p , o ));
1472
1414
y = v_getreal (v_elem (p , o + 1 ));
1473
1415
v_setreal (v_elem (p , o ), x * om [0 ][0 ] + y * om [1 ][0 ] + om [2 ][0 ]);
1474
1416
v_setreal (v_elem (p , o + 1 ), x * om [0 ][1 ] + y * om [1 ][1 ] + om [2 ][1 ]);
1475
1417
}
1476
1418
} else {
1477
- for (i = 0 ; i < count ; i ++ ) {
1419
+ for (int i = 0 ; i < count ; i ++ ) {
1478
1420
e = v_elem (p , i );
1479
1421
1480
- if (e -> type != V_ARRAY )
1422
+ if (e -> type != V_ARRAY ) {
1481
1423
err_parsepoly (i , 10 );
1482
- else if ((v_asize (e ) % 2 ) != 0 )
1424
+ } else if ((v_asize (e ) % 2 ) != 0 ) {
1483
1425
err_parsepoly (i , 11 );
1484
-
1485
- if (prog_error )
1486
- break ;
1426
+ }
1427
+ IF_PROG_ERR_RTN ;
1487
1428
1488
1429
x = v_getreal (v_elem (e , 0 ));
1489
1430
y = v_getreal (v_elem (e , 1 ));
0 commit comments