[IGSTK-Users] EllipsoidObject Radius

Jake McIvor jdmcivor at interchange.ubc.ca
Thu Jul 23 14:53:54 EDT 2009


I think I found it:

In the UpdateRepresentationProcessing and SetEllipsoidObjectProcessing
methods, the scale of the vtkSuperquadricSource is updated:

 EllipsoidObjectType::ArrayType radius = m_EllipsoidObject->GetRadius();
    m_EllipsoidSource->SetScale( radius[0], radius[1], radius[2] );

The second line should read:
   m_EllipsoidSource->SetScale( 2*radius[0], 2*radius[1], 2*radius[2] );

Does that make sense, or am I confusing the use of the setRadius method?

-Jake


On Thu, Jul 23, 2009 at 11:43 AM, Jake
McIvor<jdmcivor at interchange.ubc.ca> wrote:
> I believe there is a bug somewhere in the ellipsoidObject or
> ellipsoidObjectRepresentation classes.  When I use the SetRadius
> method, the resulting ellipsoid's axes are half as big as they should
> be ( i.e. the length of each axis is set to the radius, instead of
> each radius being half the legth of the axis.)
>
> My application uses the QtWidget.  Here is a code snippet that should
> display two 10mm spheres, touching at one point.
>
> // test ellipsoid radii
>
>       igstk::EllipsoidObject::Pointer sphere1 = igstk::EllipsoidObject::New();
>       sphere1->SetRadius( 10,10,10 );
>
>       igstk::EllipsoidObjectRepresentation::Pointer sphere1rep =
>            igstk::EllipsoidObjectRepresentation::New();
>       sphere1rep->RequestSetEllipsoidObject( sphere1 );
>       sphere1rep->SetColor( 1.0,0.0,0.0 );
>       sphere1rep->SetOpacity( 0.9 );
>
>       igstk::EllipsoidObject::Pointer sphere2 = igstk::EllipsoidObject::New();
>       sphere2->SetRadius(10,10,10);
>
>       igstk::EllipsoidObjectRepresentation::Pointer sphere2rep =
>           igstk::EllipsoidObjectRepresentation::New();
>       sphere2rep->RequestSetEllipsoidObject( sphere2 );
>       sphere2rep->SetColor( 0.0,0.0,1.0 );
>       sphere2rep->SetOpacity( 0.9 );
>
>       igstk::Transform identity;
>       identity.SetToIdentity(igstk::TimeStamp::GetLongestPossibleTime());
>       igstk::Transform transform;
>       igstk::Transform::VectorType translation;
>       igstk::Transform::VersorType rotation;
>       translation[0] = 20.0;
>       translation[1] = 0.0;
>       translation[2] = 0.0;
>       rotation.Set( 0.0, 0.0, 0.0, 1.0 );
>       igstk::Transform::ErrorType errorValue = 0;
>
>       transform.SetTranslationAndRotation(
>           translation, rotation, errorValue,
>           igstk::TimeStamp::GetLongestPossibleTime() );
>
>       sphere1->RequestSetTransformAndParent( identity, m_View );
>       sphere2->RequestSetTransformAndParent( transform, m_View );
>
>       m_View->RequestAddObject( sphere1rep );
>       m_View->RequestAddObject( sphere2rep );
>
>
> Cheers,
>
> Jake
>
> --
> Jake McIvor
> MASc Candidate, Biomedical Engineering
> Univerisity of British Columbia
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-users
>


More information about the IGSTK-Users mailing list