[Development] matrix math help needed - https://bugreports.qt.io/browse/QTBUG-84441

Giuseppe D'Angelo giuseppe.dangelo at kdab.com
Wed May 27 17:09:19 CEST 2020

On 5/27/20 3:58 PM, Matthew Woehlke wrote:
> *Nothing*  there clearly states, at least to my reading, whether the
> "new" transform happens*before*  or*after*  any existing transforms that
> the QTransform is already doing.
> IMO, changing this to clarify that would help significantly.

Sure, augmenting the docs would help. But <devil's advocate> the whole 
point of the API is for its usage to be straightforward. If you do

> QTransform t;
> t.translate();
> t.rotate();
> t.scale();
> auto result = t.map(foo);

the "obvious" meaning should be that foo is getting first translated, 
then rotated, then scaled; not the other way around.

If this is achieved by pre or postmultiplication of (transposed) 
matrices matters only if you're into Algebra&Geometryâ„¢ -- i.e. poking 
into the actual matrix, or if you're combining two transforms by means 
of operator*. Otherwise, it is not interesting at all in 99% of the 
cases, where you'd just set the transform on a painter or an item similar.

If you really want to use the "low levels", please also note that 
operator* is helping you:

> QTransform t1, t2;
> QTransform t = t1 * t2; // ok...
> auto result = foo * t;  // can only premultiply!
>                         // operator*(t, foo) does not exist

So you've built foo * t1 * t2, with t1 applied first. (This in turn 
should reveal how QTransform works internally.)

</devil's advocate>

My 2 c,
Giuseppe D'Angelo | giuseppe.dangelo at kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4329 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.qt-project.org/pipermail/development/attachments/20200527/4b3a4f5e/attachment.bin>

More information about the Development mailing list