Regression in compose-xx-with-transformation

Daniel Kochmański daniel at turtleware.eu
Tue Mar 23 05:15:07 UTC 2021


Hey Paul


‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, March 22, 2021 9:02 PM, Paul Werkowski <pw at snoopy.qozzy.com> wrote:

> A recent change in master branch seems to have reversed the argument
> order in the subject definitions. I've only checked
> compose-scaling-with-transformation which is again wrong causing my
> graphics to be written way off screen.

Indeed we had problems with transformations, but the issue was fixed; maybe
your code depended on invalid behavior?


compose-scaling-with-transformation is defined to first apply scaling, then
transformation (http://bauhh.dyndns.org:8000/clim-spec/5-3.html#_208)

(c:transform-position
         (c:compose-scaling-with-transformation
          (c:make-translation-transformation -100 -100) 100 100)
         1 1) ;-> (values 0 0)

(c:transform-position (c:make-scaling-transformation 100 100) 1 1) ;-> (values 100 100)
(c:transform-position (c:make-translation-transformation -100 -100) 100 100) ; -> (values 0 0)

Seems correct. The reverse order would give:


(c:transform-position (c:make-translation-transformation -100 -100) 1 1) ;-> (values -99 -99)
(c:transform-position (c:make-scaling-transformation 100 100) -99 -99) ;-> (values -9900 -9900)

Evaluating the former in clim-tos confirms that. IMO it is quite counterintuitive, because:

(compose-transformations A B) first applies B, then A
(compose-X-with-transformation T , at X-parameters) first applies X then T
(compose-transformation-with-X T , at X-parameters) first applies T then X

Do you agree?

>
> Paul

Best regards,
Daniel


--
Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
TurtleWare - Daniel Kochmański      | www.turtleware.eu

"Be the change that you wish to see in the world." - Mahatma Gandhi



More information about the mcclim-devel mailing list