0
$\begingroup$

I am not sure if my mental block here is conceptual or mechanical (edit below suggests it is conceptual). Suppose I want to show all possible unit basis transforms of a matrix. There are 81 possible 2x2 transforms composed on only -1,0 and 1

allTrans = Tuples[{-1, 0, 1}, {2, 2}];

Now, if I animate each of these 81 in turn transforming Matrix A, this does the job

matA = {{3, 0}, {0, 2}};Animate[Graphics[{Blue, Opacity[.5],   Parallelogram[{0, 0}, allTrans[[trNum]] . matA], LightBlue,Opacity[.8],Parallelogram[{0, 0}, matA]}, Axes -> True,  PlotRange -> {{-6, 6}, {-6, 6}}],{{trNum, 1, "Transform #"}, 1, 81, 1,Appearance -> "Labeled"},AnimationRate -> 1]

BUT, as the animation steps through the transforms, some are not rendering. I think that is because that transform is in a 2D plane perpendicular to the one in my Animation code. If I am right (and my confusion is mechanical) then it is a matter of how to display 2D graphics in a 3D box; if there is a conceptual reason I am missing something in my theory.

[edit] It occurred to me to check the Determinant of all the tranforms

Det[#] & /@ (allTrans . matA)

And I see a lot of zero determinants. So it is not just mechanical (viewpoint). Getting rid of the transforms that have a zero determinant reduces the number to 48 and they all render.

$\endgroup$

1 Answer 1

3
$\begingroup$
  • We use RegionConvert to convert the Parallelogram to a ImplicitRegion since it work for the degenerated cases when the Det equal to 0( for example when trNum = 5).
allTrans = Tuples[{-1, 0, 1}, {2, 2}];
matA = {{3, 0}, {0, 2}};
trNum = 5;
{PointSize[0], 
  DiscretizeRegion[
   RegionConvert[Parallelogram[{0, 0}, allTrans[[trNum]] . matA], 
    "Implicit"]], LightBlue, Opacity[.8], 
  Parallelogram[{0, 0}, matA]} // Graphics

enter image description here

allTrans = Tuples[{-1, 0, 1}, {2, 2}];
matA = {{3, 0}, {0, 2}};
Animate[
 Graphics[{Blue, Opacity[.5], AbsoluteThickness[2], 
   AbsolutePointSize[0], 
   DiscretizeRegion[
    RegionConvert[Parallelogram[{0, 0}, allTrans[[trNum]] . matA], 
     "Implicit"]], LightBlue, Opacity[.8], 
   Parallelogram[{0, 0}, matA]}, Axes -> True, 
  PlotRange -> {{-6, 6}, {-6, 6}}], {{trNum, 1, "Transform #"}, 1, 81,
   1, Appearance -> "Labeled"}, AnimationRate -> 1]

enter image description here

$\endgroup$
1
  • $\begingroup$ Thank you for your assistance. I am about to submit my final notebook to the Demonstrations Project and would like to acknowledge your contribution. If this is something you would like, please supply me with the name you would like me to use. $\endgroup$
    – Rogo
    Commented Feb 24, 2023 at 18:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.