451{
452 using namespace Eigen;
454 vector<Quaterniond,aligned_allocator<Quaterniond> > & vQ =
460 for(size_t r = 0;r<vQ.size();r++)
461 {
462 if(P(r)>=0)
463 {
465 }
466 }
467
468
470 {
472 }
474 assert(BE.rows() == P.rows());
475 assert(BE.rows() == RP.rows());
476
478 {
479 if(S(e))
480 {
481 int f = e;
482 while(true)
483 {
484 int p = P(f);
485 if(p==-1||!S(p))
486 {
487 break;
488 }
489 N(f) = false;
490 f = p;
491 }
492 }
493 };
495
496 while(true)
497 {
498
499 VectorXb SRP(VectorXb::Zero(RP.maxCoeff()+1));
500 for(int e = 0;e<BE.rows();e++)
501 {
503 }
504 for(int e = 0;e<BE.rows();e++)
505 {
507 }
508
510 for(int e = 0;e<P.rows();e++)
511 {
513 }
516 {
517 break;
518 }
520 }
521
522
524 {
525
526 Vector3d avg_pos(0,0,0);
527
531 int num_selection = 0;
532
533 for(int e = 0;e<BE.rows();e++)
534 {
536 {
537 Vector3d s = C.row(BE(e,0));
538 Vector3d
d = C.row(BE(e,1));
539 auto b = (
d-s).transpose().eval();
540 {
545 }
546
551
552 num_selection++;
553 }
554 }
555
556 avg_pos.array() /= (double)num_selection;
557
563
565 }
569 {
570
572 {
575 break;
576 }
577 }
578}
TranslationList m_fk_translations_at_selection
Definition MouseController.h:95
Eigen::VectorXi VectorXb
Definition MouseController.h:26
EIGEN_DEVICE_FUNC Coefficients & coeffs()
Definition Quaternion.h:284
EIGEN_DEVICE_FUNC Derived & setFromTwoVectors(const MatrixBase< Derived1 > &a, const MatrixBase< Derived2 > &b)
Definition Quaternion.h:582
EIGEN_DEVICE_FUNC void normalize()
Definition Quaternion.h:129
IGL_INLINE void forward_kinematics(const Eigen::MatrixXd &C, const Eigen::MatrixXi &BE, const Eigen::VectorXi &P, const std::vector< Eigen::Quaterniond, Eigen::aligned_allocator< Eigen::Quaterniond > > &dQ, const std::vector< Eigen::Vector3d > &dT, std::vector< Eigen::Quaterniond, Eigen::aligned_allocator< Eigen::Quaterniond > > &vQ, std::vector< Eigen::Vector3d > &vT)
Definition forward_kinematics.cpp:12