#include "posemath.h"
Include dependency graph for posemath.cc:
Go to the source code of this file.
Functions | |
double | dot (PM_CARTESIAN v1, PM_CARTESIAN v2) |
PM_CARTESIAN | cross (PM_CARTESIAN v1, PM_CARTESIAN v2) |
PM_CARTESIAN | unit (PM_CARTESIAN v) |
PM_QUATERNION | norm (PM_QUATERNION q) |
PM_ROTATION_VECTOR | norm (PM_ROTATION_VECTOR r) |
PM_ROTATION_MATRIX | norm (PM_ROTATION_MATRIX m) |
int | isNorm (PM_CARTESIAN v) |
int | isNorm (PM_QUATERNION q) |
int | isNorm (PM_ROTATION_VECTOR r) |
int | isNorm (PM_ROTATION_MATRIX m) |
double | mag (PM_CARTESIAN v) |
double | disp (PM_CARTESIAN v1, PM_CARTESIAN v2) |
PM_CARTESIAN | inv (PM_CARTESIAN v) |
PM_ROTATION_MATRIX | inv (PM_ROTATION_MATRIX m) |
PM_QUATERNION | inv (PM_QUATERNION q) |
PM_POSE | inv (PM_POSE p) |
PM_HOMOGENEOUS | inv (PM_HOMOGENEOUS h) |
PM_CARTESIAN | proj (PM_CARTESIAN v1, PM_CARTESIAN v2) |
PM_CARTESIAN | operator+ (PM_CARTESIAN v) |
PM_CARTESIAN | operator- (PM_CARTESIAN v) |
PM_QUATERNION | operator+ (PM_QUATERNION q) |
PM_QUATERNION | operator- (PM_QUATERNION q) |
PM_POSE | operator+ (PM_POSE p) |
PM_POSE | operator- (PM_POSE p) |
int | operator== (PM_CARTESIAN v1, PM_CARTESIAN v2) |
int | operator== (PM_QUATERNION q1, PM_QUATERNION q2) |
int | operator== (PM_POSE p1, PM_POSE p2) |
int | operator!= (PM_CARTESIAN v1, PM_CARTESIAN v2) |
int | operator!= (PM_QUATERNION q1, PM_QUATERNION q2) |
int | operator!= (PM_POSE p1, PM_POSE p2) |
PM_CARTESIAN | operator+ (PM_CARTESIAN v1, PM_CARTESIAN v2) |
PM_CARTESIAN | operator- (PM_CARTESIAN v1, PM_CARTESIAN v2) |
PM_CARTESIAN | operator * (PM_CARTESIAN v, double s) |
PM_CARTESIAN | operator * (double s, PM_CARTESIAN v) |
PM_CARTESIAN | operator/ (PM_CARTESIAN v, double s) |
PM_QUATERNION | operator * (double s, PM_QUATERNION q) |
PM_QUATERNION | operator * (PM_QUATERNION q, double s) |
PM_QUATERNION | operator/ (PM_QUATERNION q, double s) |
PM_CARTESIAN | operator * (PM_QUATERNION q, PM_CARTESIAN v) |
PM_QUATERNION | operator * (PM_QUATERNION q1, PM_QUATERNION q2) |
PM_ROTATION_MATRIX | operator * (PM_ROTATION_MATRIX m1, PM_ROTATION_MATRIX m2) |
PM_POSE | operator * (PM_POSE p1, PM_POSE p2) |
PM_CARTESIAN | operator * (PM_POSE p, PM_CARTESIAN v) |
Variables | |
double | noElement = 0.0 |
PM_CARTESIAN * | noCart = 0 |
|
Definition at line 957 of file posemath.cc. Referenced by testCart(), and testCyl().
00958 { 00959 double d; 00960 PmCartesian _v1, _v2; 00961 00962 toCart(v1, &_v1); 00963 toCart(v2, &_v2); 00964 00965 pmCartCartDot(_v1, _v2, &d); 00966 00967 return d; 00968 } |
|
Definition at line 972 of file posemath.cc. Referenced by testCart(), and testCyl().
00973 { 00974 PM_CARTESIAN ret; 00975 PmCartesian _v1, _v2; 00976 00977 toCart(v1, &_v1); 00978 toCart(v2, &_v2); 00979 00980 pmCartCartCross(_v1, _v2, &_v1); 00981 00982 toCart(_v1, &ret); 00983 00984 return ret; 00985 } |
|
Definition at line 990 of file posemath.cc. Referenced by testCart().
00991 { 00992 PM_CARTESIAN vout; 00993 PmCartesian _v; 00994 00995 toCart(v, &_v); 00996 00997 pmCartUnit(_v, &_v); 00998 00999 toCart(_v, &vout); 01000 01001 return vout; 01002 } |
|
Definition at line 1023 of file posemath.cc. 01024 { 01025 PM_QUATERNION qout; 01026 PmQuaternion _q; 01027 01028 toQuat(q, &_q); 01029 pmQuatNorm(_q, &_q); 01030 01031 toQuat(_q, &qout); 01032 01033 return qout; 01034 } |
|
Definition at line 1036 of file posemath.cc. 01037 { 01038 PM_ROTATION_VECTOR rout; 01039 PmRotationVector _r; 01040 01041 toRot(r, &_r); 01042 01043 pmRotNorm(_r, &_r); 01044 01045 toRot(_r, &rout); 01046 01047 return rout; 01048 } |
|
Definition at line 1050 of file posemath.cc. Referenced by testPrint(), and testQuat().
01051 { 01052 PM_ROTATION_MATRIX mout; 01053 PmRotationMatrix _m; 01054 01055 toMat(m, &_m); 01056 01057 pmMatNorm(_m, &_m); 01058 01059 toMat(_m, &mout); 01060 01061 return mout; 01062 } |
|
Definition at line 1066 of file posemath.cc. 01067 { 01068 PmCartesian _v; 01069 01070 toCart(v, &_v); 01071 01072 return pmCartIsNorm(_v); 01073 } |
|
Definition at line 1075 of file posemath.cc. 01076 { 01077 PmQuaternion _q; 01078 01079 toQuat(q, &_q); 01080 01081 return pmQuatIsNorm(_q); 01082 } |
|
Definition at line 1084 of file posemath.cc. 01085 { 01086 PmRotationVector _r; 01087 01088 toRot(r, &_r); 01089 01090 return pmRotIsNorm(_r); 01091 } |
|
Definition at line 1093 of file posemath.cc. Referenced by testQuat().
01094 { 01095 PmRotationMatrix _m; 01096 01097 toMat(m, &_m); 01098 01099 return pmMatIsNorm(_m); 01100 } |
|
Definition at line 1104 of file posemath.cc. Referenced by testCart(), and testCyl().
01105 { 01106 double ret; 01107 PmCartesian _v; 01108 01109 toCart(v, &_v); 01110 01111 pmCartMag(_v, &ret); 01112 01113 return ret; 01114 } |
|
Definition at line 1118 of file posemath.cc. Referenced by testCart().
01119 { 01120 double ret; 01121 PmCartesian _v1, _v2; 01122 01123 toCart(v1, &_v1); 01124 toCart(v2, &_v2); 01125 01126 pmCartCartDisp(_v1, _v2, &ret); 01127 01128 return ret; 01129 } |
|
Definition at line 1133 of file posemath.cc. 01134 { 01135 PM_CARTESIAN ret; 01136 PmCartesian _v; 01137 01138 toCart(v, &_v); 01139 01140 pmCartInv(_v, &_v); 01141 01142 toCart(_v, &ret); 01143 01144 return ret; 01145 } |
|
Definition at line 1147 of file posemath.cc. 01148 { 01149 PM_ROTATION_MATRIX ret; 01150 PmRotationMatrix _m; 01151 01152 toMat(m, &_m); 01153 01154 pmMatInv(_m, &_m); 01155 01156 toMat(_m, &ret); 01157 01158 return ret; 01159 } |
|
Definition at line 1161 of file posemath.cc. 01162 { 01163 PM_QUATERNION ret; 01164 PmQuaternion _q; 01165 01166 toQuat(q, &_q); 01167 01168 pmQuatInv(_q, &_q); 01169 01170 toQuat(_q, &ret); 01171 01172 return ret; 01173 } |
|
Definition at line 1175 of file posemath.cc. |
|
Definition at line 1189 of file posemath.cc. Referenced by testCart(), testCyl(), and testQuat().
01190 { 01191 PM_HOMOGENEOUS ret; 01192 PmHomogeneous _h; 01193 01194 toHom(h, &_h); 01195 01196 pmHomInv(_h, &_h); 01197 01198 toHom(_h, &ret); 01199 01200 return ret; 01201 } |
|
Definition at line 1205 of file posemath.cc. 01206 { 01207 PM_CARTESIAN ret; 01208 PmCartesian _v1, _v2; 01209 01210 toCart(v1, &_v1); 01211 toCart(v2, &_v2); 01212 01213 pmCartCartProj(_v1, _v2, &_v1); 01214 01215 toCart(_v1, &ret); 01216 01217 return ret; 01218 } |
|
Definition at line 1222 of file posemath.cc. 01223 { 01224 return v; 01225 } |
|
Definition at line 1227 of file posemath.cc. 01228 { 01229 PM_CARTESIAN ret; 01230 01231 ret.x = -v.x; 01232 ret.y = -v.y; 01233 ret.z = -v.z; 01234 01235 return ret; 01236 } |
|
Definition at line 1238 of file posemath.cc. 01239 { 01240 return q; 01241 } |
|
Definition at line 1243 of file posemath.cc. 01244 { 01245 PM_QUATERNION ret; 01246 PmQuaternion _q; 01247 01248 toQuat(q, &_q); 01249 01250 pmQuatInv(_q, &_q); 01251 01252 toQuat(_q, &ret); 01253 01254 return ret; 01255 } |
|
Definition at line 1257 of file posemath.cc. 01258 { 01259 return p; 01260 } |
|
Definition at line 1262 of file posemath.cc. |
|
Definition at line 1276 of file posemath.cc. 01277 { 01278 PmCartesian _v1, _v2; 01279 01280 toCart(v1, &_v1); 01281 toCart(v2, &_v2); 01282 01283 return pmCartCartCompare(_v1, _v2); 01284 } |
|
Definition at line 1286 of file posemath.cc. 01287 { 01288 PmQuaternion _q1, _q2; 01289 01290 toQuat(q1, &_q1); 01291 toQuat(q2, &_q2); 01292 01293 return pmQuatQuatCompare(_q1, _q2); 01294 } |
|
Definition at line 1296 of file posemath.cc. |
|
Definition at line 1306 of file posemath.cc. 01307 { 01308 PmCartesian _v1, _v2; 01309 01310 toCart(v1, &_v1); 01311 toCart(v2, &_v2); 01312 01313 return ! pmCartCartCompare(_v1, _v2); 01314 } |
|
Definition at line 1316 of file posemath.cc. 01317 { 01318 PmQuaternion _q1, _q2; 01319 01320 toQuat(q1, &_q1); 01321 toQuat(q2, &_q2); 01322 01323 return ! pmQuatQuatCompare(_q1, _q2); 01324 } |
|
Definition at line 1326 of file posemath.cc. |
|
Definition at line 1336 of file posemath.cc. 01337 { 01338 PM_CARTESIAN ret; 01339 01340 ret.x = v1.x + v2.x; 01341 ret.y = v1.y + v2.y; 01342 ret.z = v1.z + v2.z; 01343 01344 return ret; 01345 } |
|
Definition at line 1347 of file posemath.cc. 01348 { 01349 PM_CARTESIAN ret; 01350 01351 ret.x = v1.x - v2.x; 01352 ret.y = v1.y - v2.y; 01353 ret.z = v1.z - v2.z; 01354 01355 return ret; 01356 } |
|
Definition at line 1358 of file posemath.cc. 01359 { 01360 PM_CARTESIAN ret; 01361 01362 ret.x = v.x * s; 01363 ret.y = v.y * s; 01364 ret.z = v.z * s; 01365 01366 return ret; 01367 } |
|
Definition at line 1369 of file posemath.cc. 01370 { 01371 PM_CARTESIAN ret; 01372 01373 ret.x = v.x * s; 01374 ret.y = v.y * s; 01375 ret.z = v.z * s; 01376 01377 return ret; 01378 } |
|
Definition at line 1380 of file posemath.cc. 01381 { 01382 PM_CARTESIAN ret; 01383 01384 #ifdef PM_DEBUG 01385 if (s == 0.0) 01386 { 01387 #ifdef PM_PRINT_ERROR 01388 pmPrintError("PM_CARTESIAN::operator / : divide by 0\n"); 01389 #endif 01390 pmErrno = PM_DIV_ERR; 01391 return ret; 01392 } 01393 #endif 01394 01395 ret.x = v.x / s; 01396 ret.y = v.y / s; 01397 ret.z = v.z / s; 01398 01399 return ret; 01400 } |
|
Definition at line 1402 of file posemath.cc. 01403 { 01404 PM_QUATERNION qout; 01405 PmQuaternion _q; 01406 01407 toQuat(q, &_q); 01408 01409 pmQuatScalMult(_q, s, &_q); 01410 01411 toQuat(_q, &qout); 01412 01413 return qout; 01414 } |
|
Definition at line 1416 of file posemath.cc. 01417 { 01418 PM_QUATERNION qout; 01419 PmQuaternion _q; 01420 01421 toQuat(q, &_q); 01422 01423 pmQuatScalMult(_q, s, &_q); 01424 01425 toQuat(_q, &qout); 01426 01427 return qout; 01428 } |
|
Definition at line 1430 of file posemath.cc. 01431 { 01432 PM_QUATERNION qout; 01433 PmQuaternion _q; 01434 01435 toQuat(q, &_q); 01436 01437 #ifdef PM_DEBUG 01438 if (s == 0.0) 01439 { 01440 #ifdef PM_PRINT_ERROR 01441 pmPrintError("Divide by 0 in operator /\n"); 01442 #endif 01443 pmErrno = PM_NORM_ERR; 01444 01445 #if 0 01446 // g++/gcc versions 2.8.x and 2.9.x 01447 // will complain that the call to PM_QUATERNION(PM_QUATERNION) is 01448 // ambigous. (2.7.x and some others allow it) 01449 return qout = PM_QUATERNION((double) 0, (double)0, (double)0, (double)0); 01450 #else 01451 01452 PmQuaternion quat; 01453 01454 quat.s = 0; 01455 quat.x = 0; 01456 quat.y = 0; 01457 quat.z = 0; 01458 01459 pmQuatNorm(quat, &quat); 01460 01461 qout.s = quat.s; 01462 qout.x = quat.x; 01463 qout.y = quat.y; 01464 qout.z = quat.z; 01465 return qout; 01466 #endif 01467 01468 } 01469 #endif 01470 01471 pmQuatScalMult(_q, 1.0 / s, &_q); 01472 toQuat(_q, &qout); 01473 01474 pmErrno = 0; 01475 return qout; 01476 } |
|
Definition at line 1478 of file posemath.cc. 01479 { 01480 PM_CARTESIAN vout; 01481 PmQuaternion _q; 01482 PmCartesian _v; 01483 01484 toQuat(q, &_q); 01485 toCart(v, &_v); 01486 01487 pmQuatCartMult(_q, _v, &_v); 01488 01489 toCart(_v, &vout); 01490 01491 return vout; 01492 } |
|
Definition at line 1494 of file posemath.cc. 01495 { 01496 PM_QUATERNION ret; 01497 PmQuaternion _q1, _q2; 01498 01499 toQuat(q1, &_q1); 01500 toQuat(q2, &_q2); 01501 01502 pmQuatQuatMult(_q1, _q2, &_q1); 01503 01504 toQuat(_q1, &ret); 01505 01506 return ret; 01507 } |
|
Definition at line 1509 of file posemath.cc. 01510 { 01511 PM_ROTATION_MATRIX ret; 01512 PmRotationMatrix _m1, _m2; 01513 01514 toMat(m1, &_m1); 01515 toMat(m2, &_m2); 01516 01517 pmMatMatMult(_m1, _m2, &_m1); 01518 01519 toMat(_m1, &ret); 01520 01521 return ret; 01522 } |
|
Definition at line 1524 of file posemath.cc. |
|
Definition at line 1539 of file posemath.cc. 01540 { 01541 PM_CARTESIAN ret; 01542 PmPose _p; 01543 PmCartesian _v; 01544 01545 toPose(p, &_p); 01546 toCart(v, &_v); 01547 01548 pmPoseCartMult(_p, _v, &_v); 01549 01550 toCart(_v, &ret); 01551 01552 return ret; 01553 } |
|
Definition at line 30 of file posemath.cc. |
|
Definition at line 31 of file posemath.cc. |