[IGSTK-Developers] Conclusion on igstkTransform issues - David&Patrick

Luis Ibanez luis.ibanez at kitware.com
Tue Mar 7 08:47:42 EST 2006


Hi Patrick,


1) The double use of Static and Dynamic transform will require
    SpatialObject to have both of them as member variables.
    Since SpatialObjects should be able to be "static" or "tracked".

    What is the difficulty with having the "static" transforms be
    represented with a time stamp of long duration ?


2) When composing transforms, the time stamp of the final transform
    must by the intersection among all the time stamps of the transforms
    involved on the composition.

    We could add to the TimeStamp class, as service method that will
    compote the intersection between two TimeStamps. This operation
    is associative, so by applying it by pairs we can compose any
    number of TimeStamps.


3) It is better to have a explicit "Compose" method, than having
    an operator overload.  The Compose method name could also make
    clearer whether we are pre-composing or post-composing the
    transform.




   Luis



---------------------
Patrick Cheng wrote:
> Hi everybody,
> 
> This is the conclusion of the discussion between david and me. Welcome 
> to comment on it.
> 
> =======================================================================
> 
> Problem 1. We need both static and dynamic transform. (Registration and 
> calibration transforms should be static, and tracker transforms should 
> be dynamic)
> 
> Solution: Make subclasses of igstk::Transform,
> igstk::DynamicTransform and igstk::StaticTransform StaticTransform which 
> do not have time stamp. In base class we provide pure virtual fuction:
> bool IsStatic()/IsDynamic();
> 
>   Q? Do we some times have to switch the transform of a object from 
> dynamic to static or the other way around?
> 
> =======================================================================
> 
> Problem 2. We currently don't have a simple transform compose method, 
> and we are not taking care of time stamps in the current implementation 
> of the transform multiplication.
> 
> e.g.
> Ta is static transform, Tb is dynamic, and Tc is dynamic.
> When we do T = Ta * Tb * Tc
> to get the final valid time stamp for T, we should first ignore Ta, and 
> pick up the earlier expiration time from Tb and Tc, and minus current 
> time, to get the valid time period for the T, and set a right time stamp 
> for it.
> 
> Solution: Add a simple function or operator such as:
> transform = transform1.compose( transform2 )
> equals to:
> transform = transform1 * transform2
> 
> This will avoid the wrong matrix composition, and make code simpler and 
> cleaner.
> Also this compose() method will calculate the correct time stamp 
> automatically according to predefine rules.
> 
> =======================================================================
> 
> David, I hope you still agree on these points.
> 
> 




More information about the IGSTK-Developers mailing list