<div dir="ltr">We got it working with the translation-to-new-point strategy instead, but I appreciate the help. I especially appreciate the tip to look into homothety. My linear algebra is really weak, but it looks like a useful and relatively easy-to-understand concept.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 3, 2024 at 7:15 AM Hilaire Fernandes via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

  
    
  
  <div bgcolor="#FFFFFF">
    <div>Le 03/03/2024 à 12:39, Hilaire
      Fernandes a écrit :<br>
    </div>
    <blockquote type="cite">Affine
      transformations should be used and composed with translations and
      scale but I can't get a code snipped working yet. You could then
      extent your morph with the appropriate protocol.</blockquote>
    <p>Here it is with the proper composed affine transformations to get
      the scaling with the center that suit you. The scaling is done
      around the point v:</p>
    <p></p>
    <div style="background:rgb(255,255,255);overflow:auto;width:auto;border-style:solid;border-color:gray;border-width:0.1em 0.1em 0.1em 0.8em;padding:0.2em 0.6em">
      <pre style="margin:0px;line-height:125%"><span style="color:rgb(51,51,51)">|</span><span style="color:rgb(153,102,51)"> rect1 rect2 transformation v </span><span style="color:rgb(51,51,51)">|</span>
<span style="color:rgb(153,102,51)">v</span> <span style="color:rgb(51,51,51)">:=</span> <span style="color:rgb(102,0,238);font-weight:bold">60</span><span style="color:rgb(0,102,187);font-weight:bold">@</span><span style="color:rgb(102,0,238);font-weight:bold">20</span>.
<span style="color:rgb(153,102,51)">rect1</span> <span style="color:rgb(51,51,51)">:=</span> <span style="color:rgb(187,0,102);font-weight:bold">Rectangle1Morph</span> <span style="color:rgb(0,112,32)">new</span> <span style="color:rgb(0,102,187);font-weight:bold">openInWorld</span>.
<span style="color:rgb(153,102,51)">rect2</span> <span style="color:rgb(51,51,51)">:=</span> <span style="color:rgb(187,0,102);font-weight:bold">Rectangle2Morph</span> <span style="color:rgb(0,112,32)">new</span> <span style="color:rgb(0,102,187);font-weight:bold">openInWorld</span>.
<span style="color:rgb(153,102,51)">rect1</span> <span style="color:rgb(0,102,187);font-weight:bold">morphPosition:</span> <span style="color:rgb(187,0,102);font-weight:bold">DisplayScreen</span> <span style="color:rgb(0,102,187);font-weight:bold">actualScreenSize</span> <span style="color:rgb(0,102,187);font-weight:bold">//</span> <span style="color:rgb(102,0,238);font-weight:bold">2</span> <span style="color:rgb(0,102,187);font-weight:bold">-</span> v.
<span style="color:rgb(153,102,51)">rect2</span> <span style="color:rgb(0,102,187);font-weight:bold">morphPosition:</span> <span style="color:rgb(187,0,102);font-weight:bold">DisplayScreen</span> <span style="color:rgb(0,102,187);font-weight:bold">actualScreenSize</span> <span style="color:rgb(0,102,187);font-weight:bold">//</span> <span style="color:rgb(102,0,238);font-weight:bold">2</span>.
<span style="color:rgb(153,102,51)">transformation</span> <span style="color:rgb(51,51,51)">:=</span> <span style="color:rgb(153,102,51)">rect1</span> <span style="color:rgb(0,102,187);font-weight:bold">location</span> <span style="color:rgb(0,102,187);font-weight:bold">composedWith:</span> (
        (<span style="color:rgb(187,0,102);font-weight:bold">AffineTransformation</span> <span style="color:rgb(0,102,187);font-weight:bold">withTranslation:</span> <span style="color:rgb(153,102,51)">v</span>) <span style="color:rgb(0,102,187);font-weight:bold">composedWith:</span>             
                ((<span style="color:rgb(187,0,102);font-weight:bold">AffineTransformation</span> <span style="color:rgb(0,102,187);font-weight:bold">withScale:</span> <span style="color:rgb(102,0,238);font-weight:bold">2</span>) <span style="color:rgb(0,102,187);font-weight:bold">composedWith:</span>  
                        (<span style="color:rgb(187,0,102);font-weight:bold">AffineTransformation</span> <span style="color:rgb(0,102,187);font-weight:bold">withTranslation:</span> <span style="color:rgb(153,102,51)">v</span> <span style="color:rgb(0,102,187);font-weight:bold">negated</span>)) ).       
<span style="color:rgb(153,102,51)">rect1</span> <span style="color:rgb(0,102,187);font-weight:bold">location:</span> <span style="color:rgb(153,102,51)">transformation</span>.
<span style="color:rgb(153,102,51)">rect2</span> <span style="color:rgb(0,102,187);font-weight:bold">scaleBy:</span> <span style="color:rgb(102,0,238);font-weight:bold">2</span>.

<span style="color:rgb(136,136,136)">"</span>
<span style="color:rgb(136,136,136)">Rectangle1Morph allInstancesDo: [:each | each delete].</span>
<span style="color:rgb(136,136,136)">Rectangle2Morph allInstancesDo: [:each | each delete].</span>
<span style="color:rgb(136,136,136)">"</span>
</pre>
    </div>
    <p>Observe the scaled blue and pink rectangles are at now at the
      same position.</p>
    <p>Hilaire<br>
    </p>
    <pre cols="72">-- 
GNU Dr. Geo
<a href="http://gnu.org/s/dr-geo/" target="_blank">http://gnu.org/s/dr-geo/</a>
<a href="http://gnu-drgeo.blogspot.com/" target="_blank">http://gnu-drgeo.blogspot.com/</a></pre>
  </div>

-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div>