FieldTrip: Ticket #6: Remove origin and standard axis biases in Transformations
http://trac.haskell.org/FieldTrip/ticket/6
<p>
<tt>rotate3</tt> rotates about the origin and <tt>scale3</tt> fixes the origin and scales along the x y and z axis. An affine transform should be origin independent, and operations ought to be basis independent.
</p>
<p>
<tt>rotate3</tt> should take an fixed point parameter (a point on the rotation axis). <tt>scale3</tt> should take an fixed point parameter (the point to be fixed by the scale) and a vector that gives the direction to scale and whose length specifies the scaling factor. <tt>uscale3</tt> should take a fixed point and a magnitude. <tt>translate3</tt> is fine.
</p>
<p>
These changes prevent common errors such as scaling or rotating sending the object outside the field of view. This happens because users intuitively expect the operations to scale and rotate about some unstated centre of mass. By requiring these parameters, users will think about where the want to scale and rotate about and pass in the required information.
</p>
<p>
The same changes should be applied to <tt>Transform2</tt>. However a <tt>reflect</tt> function should perhaps be added because otherwise all <tt>Transform2</tt> functions would have positive determinant.
</p>
en-usFieldTriphttp://trac.haskell.org/FieldTrip/chrome/common/trac_banner.png
http://trac.haskell.org/FieldTrip/ticket/6
Trac 0.11.1r6Tue, 11 Nov 2008 01:26:38 GMTcomment added; type changed
http://trac.haskell.org/FieldTrip/ticket/6#comment:1
http://trac.haskell.org/FieldTrip/ticket/6#comment:1
<ul>
<li><strong>type</strong>
changed from <em>defect</em> to <em>enhancement</em>
</li>
</ul>
Ticketr6Tue, 11 Nov 2008 02:09:14 GMTcomment added
http://trac.haskell.org/FieldTrip/ticket/6#comment:2
http://trac.haskell.org/FieldTrip/ticket/6#comment:2
<p>
Sorry, I made a mistake in specifying what an anisotropic scale needs. The user needs to specify a plane and a scaling magnitude. This can be given by a fixed point (some point on the fixed plane) a (unit) normal for the plane, and a scaling magnitude. Because the magnitude is given separately, reflections can be created by specifying (-1) as the magnitude.
</p>
Ticket