本文整理汇总了C++中Matrix_3x3::Diagonalize_Sort_Chirality方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix_3x3::Diagonalize_Sort_Chirality方法的具体用法?C++ Matrix_3x3::Diagonalize_Sort_Chirality怎么用?C++ Matrix_3x3::Diagonalize_Sort_Chirality使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix_3x3
的用法示例。
在下文中一共展示了Matrix_3x3::Diagonalize_Sort_Chirality方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoAction
// Action_Principal::DoAction()
Action::RetType Action_Principal::DoAction(int frameNum, ActionFrame& frm) {
Matrix_3x3 Inertia;
Vec3 Eval;
frm.Frm().CalculateInertia( mask_, Inertia );
// NOTE: Diagonalize_Sort_Chirality places sorted eigenvectors in rows.
Inertia.Diagonalize_Sort_Chirality( Eval, debug_ );
if (outfile_ != 0) {
int fn = frameNum+1;
outfile_->Printf("%i EIGENVALUES: %f %f %f\n%i EIGENVECTOR 0: %f %f %f\n%i EIGENVECTOR 1: %f %f %f\n%i EIGENVECTOR 2: %f %f %f\n",
fn, Eval[0], Eval[1], Eval[2],
fn, Inertia[0], Inertia[1], Inertia[2],
fn, Inertia[3], Inertia[4], Inertia[5],
fn, Inertia[6], Inertia[7], Inertia[8]);
//Eval.Print("PRINCIPAL EIGENVALUES");
//Inertia.Print("PRINCIPAL EIGENVECTORS (Rows)");
}
if (vecData_ != 0) {
vecData_->AddMat3x3( Inertia );
valData_->AddVxyz( Eval );
}
// Rotate - since Evec is already transposed (eigenvectors
// are returned in rows) just do plain rotation to affect an
// inverse rotation.
if (doRotation_) {
frm.ModifyFrm().Rotate( Inertia );
return Action::MODIFY_COORDS;
}
return Action::OK;
}
示例2: Principal
void Action_Vector::Principal(Frame const& currentFrame) {
Matrix_3x3 Inertia;
Vec3 Eval;
// Origin is center of atoms in mask_
Vec3 OXYZ = currentFrame.CalculateInertia( mask_, Inertia );
// NOTE: Diagonalize_Sort_Chirality places sorted eigenvectors in rows.
Inertia.Diagonalize_Sort_Chirality( Eval, 0 );
// Eval.Print("PRINCIPAL EIGENVALUES");
// Inertia.Print("PRINCIPAL EIGENVECTORS (Rows)");
if ( mode_ == PRINCIPAL_X )
Vec_->AddVxyz( Inertia.Row1(), OXYZ ); // First row = first eigenvector
else if ( mode_ == PRINCIPAL_Y )
Vec_->AddVxyz( Inertia.Row2(), OXYZ ); // Second row = second eigenvector
else // PRINCIPAL_Z
Vec_->AddVxyz( Inertia.Row3(), OXYZ ); // Third row = third eigenvector
}