# [GIF] Strange Duality

Posted 4 years ago
3939 Views
|
2 Replies
|
6 Total Likes
|
 Strange DualityThis month's MCCC theme is "Go-To Polygon", which got me thinking about my favorite way of generating random polygons. As I've mentioned before, there is a correspondence between $n \times 2$ matrices with orthonormal columns (a.k.a., the Stiefel manifold $V_2(\mathbb{R}^n)$) and $n$-gons in the plane of perimeter 2. This is explained fairly abstractly in our paper and a little more concretely in this talk, but the upshot is that it's easy to generate random $n \times 2$ matrices with orthonormal columns, so it's easy to generate random $n$-gons.Really, the particular $n \times 2$ matrix you pick doesn't matter: what's important is the plane in $\mathbb{R}^n$ that the columns span. If you pick a different (orthonormal) basis for the plane, you just rotate the corresponding polygon.Now, in this story quadrilaterals are special. Since a quadrilateral corresponds to a 2-dimensional plane in $\mathbb{R}^4$, and since the orthogonal complement of a 2-plane in $\mathbb{R}^4$ is another 2-plane in $\mathbb{R}^4$, we see that in this formalism, every quadrilateral has a dual quadrilateral coming from orthogonal complementation.In the case of the square, its dual quadrilateral is another square, given by reflecting in the $x$-axis. The above animation shows the one-parameter family of quadrilaterals given by the closed geodesic connecting the square to its dual. Here's the code: ToReal[z_] := {Re[z], Im[z]}; ToComplex[{x_, y_}] := x + I y; FrameToEdges[frame_] := ToReal[ToComplex[#]^2] & /@ Transpose[frame]; FrameToVertices[frame_] := Accumulate[FrameToEdges[frame]]; DualFourFrame[frame_] := Orthogonalize[NullSpace[frame]]; Module[{frame, dualframe, n}, frame = Transpose[ ToReal[Sqrt[#]] & /@ Table[1/2 E^(I ?), {?, 0, 2 ? - ?/2, ?/2}]]; dualframe = DualFourFrame[frame]; n = 6; Manipulate[ Graphics[{FaceForm[None], Table[{EdgeForm[ Directive[JoinForm["Round"], cols[[Mod[i, 3, 2]]], Thickness[.02]]], Polygon[FrameToVertices[ Cos[t + i ?/n] frame + Sin[t + i ?/n] dualframe]]}, {i, 1, n}]}, ImageSize -> {540, 540}, Background -> cols[[1]], PlotRange -> {{-3/4, 5/4}, {-1, 1}}], {t, 0, ?}]] 
2 Replies
Sort By:
Posted 4 years ago
 Beautiful and indeed a bit dissonant or dichotomous.