/** merging a universal (oii) and spherical (iii) constraint may result in: <ul> <li> fixed : all other cases </ul> */ Joint meld_oii_iii(const Joint& universal, const Joint& ball, const bool flip = false) { //log4cpp::CategoryStream& log = universal.log_cf.infoStream(); //log << (flip ? "meld_iii_oii" : "meld_oii_iii"); // isis_LOG(lg, isis_FILE, isis_INFO) << (flip ? "meld_iii_oii" : "meld_oii_iii"); return universal.make_composite(ball); }
/** merging a spherical (iii) and cylindrical (oof) constraint may result in: <ul> <li> fixed : all other cases </ul> */ Joint meld_iii_oof(const Joint& ball, const Joint& axis, const bool flip = false) { //log4cpp::CategoryStream& log = ball.log_cf.infoStream(); //log << (flip ? "meld_oof_iii" : "meld_iii_oof"); // isis_LOG(lg, isis_FILE, isis_INFO) << (flip ? "meld_oof_iii" : "meld_iii_oof"); return ball.make_composite(axis); }
/** merging a revolute (ooi) and a universal (oii) constraint results in: <ul> <li> fixed : all other cases </ul> */ Joint meld_oof_oii(const Joint& axis, const Joint& universal, const bool flip = false) { //log4cpp::CategoryStream& log = axis.log_cf.infoStream(); //log << (flip ? "meld_oii_oof" : "meld_oof_oii"); // isis_LOG(lg, isis_FILE, isis_INFO) << (flip ? "meld_oii_oof" : "meld_oof_oii"); return axis.make_composite(universal); }
/** merging a pair of universal (oii) joints: <ul> <li> fixed : all other cases </ul> */ Joint meld_oii_oii(const Joint& major, const Joint& minor) { //log4cpp::CategoryStream& log = major.log_cf.infoStream(); //log << "meld_oii_oii"; // isis_LOG(lg, isis_FILE, isis_INFO) << "meld_oii_oii"; return major.make_composite(minor); }
/** merging a revolute (ooi) and a spherical (iii) constraint results in: <ul> <li> revolute : origins are coincident <li> fixed : all other cases </ul> */ Joint meld_ooi_iii(const Joint& pin, const Joint& ball, const bool flip = false) { //log4cpp::CategoryStream& log = pin.log_cf.infoStream(); //log << (flip ? "meld_iii_ooi" : "meld_ooi_iii"); // isis_LOG(lg, isis_FILE, isis_INFO) << (flip ? "meld_iii_ooi" : "meld_ooi_iii"); e3ga::vector x1 = pin.location; e3ga::vector x2 = ball.location; e3ga::vector x1x2 = x2 - x1; if ( e3ga::zero(x1x2, DEFAULT_TOLERANCE) ) { return pin; } return pin.make_composite(ball); }