MCPcopy Create free account
hub / github.com/Kitware/VTK / Prop3DTransform

Method Prop3DTransform

Interaction/Style/vtkInteractorStyleTrackballActor.cxx:520–571  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

518
519//------------------------------------------------------------------------------
520void vtkInteractorStyleTrackballActor::Prop3DTransform(
521 vtkProp3D* prop3D, double* boxCenter, int numRotation, double** rotate, double* scale)
522{
523 vtkMatrix4x4* oldMatrix = vtkMatrix4x4::New();
524 prop3D->GetMatrix(oldMatrix);
525
526 double orig[3];
527 prop3D->GetOrigin(orig);
528
529 vtkTransform* newTransform = vtkTransform::New();
530 newTransform->PostMultiply();
531 if (prop3D->GetUserMatrix() != nullptr)
532 {
533 newTransform->SetMatrix(prop3D->GetUserMatrix());
534 }
535 else
536 {
537 newTransform->SetMatrix(oldMatrix);
538 }
539
540 newTransform->Translate(-(boxCenter[0]), -(boxCenter[1]), -(boxCenter[2]));
541
542 for (int i = 0; i < numRotation; i++)
543 {
544 newTransform->RotateWXYZ(rotate[i][0], rotate[i][1], rotate[i][2], rotate[i][3]);
545 }
546
547 if ((scale[0] * scale[1] * scale[2]) != 0.0)
548 {
549 newTransform->Scale(scale[0], scale[1], scale[2]);
550 }
551
552 newTransform->Translate(boxCenter[0], boxCenter[1], boxCenter[2]);
553
554 // now try to get the composite of translate, rotate, and scale
555 newTransform->Translate(-(orig[0]), -(orig[1]), -(orig[2]));
556 newTransform->PreMultiply();
557 newTransform->Translate(orig[0], orig[1], orig[2]);
558
559 if (prop3D->GetUserMatrix() != nullptr)
560 {
561 newTransform->GetMatrix(prop3D->GetUserMatrix());
562 }
563 else
564 {
565 prop3D->SetPosition(newTransform->GetPosition());
566 prop3D->SetScale(newTransform->GetScale());
567 prop3D->SetOrientation(newTransform->GetOrientation());
568 }
569 oldMatrix->Delete();
570 newTransform->Delete();
571}
572VTK_ABI_NAMESPACE_END

Callers 3

RotateMethod · 0.95
SpinMethod · 0.95
UniformScaleMethod · 0.95

Calls 15

GetUserMatrixMethod · 0.80
RotateWXYZMethod · 0.80
DeleteMethod · 0.65
NewFunction · 0.50
GetMatrixMethod · 0.45
GetOriginMethod · 0.45
SetMatrixMethod · 0.45
TranslateMethod · 0.45
ScaleMethod · 0.45
SetPositionMethod · 0.45
GetPositionMethod · 0.45
SetScaleMethod · 0.45

Tested by

no test coverage detected