Skip to content

Instantly share code, notes, and snippets.

Revisions

  1. BrianWeinstein revised this gist Oct 18, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions Curves of Constant Width and Odd-Sided Reuleaux Polygons
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,3 @@

    x[n_, \[Theta]_] := 2*Cos[Pi/(2*n)]*Cos[(1/2)*(\[Theta] + (Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1))] - Cos[(Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1)]

    y[n_, \[Theta]_] := 2*Cos[Pi/(2*n)]*Sin[(1/2)*(\[Theta] + (Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1))] - Sin[(Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1)]
    @@ -19,4 +18,5 @@ reuRotate[n_, \[Phi]_] :=
    ]
    }[[1]]

    Manipulate[reuRotate[n, \[Phi]], {n, 3, 15, 2}, {\[Phi], 0, 2*Pi}]
    Manipulate[reuRotate[n, \[Phi]], {n, 3, 15, 2}, {\[Phi], 0, 2*Pi}]

  2. BrianWeinstein created this gist Oct 18, 2014.
    22 changes: 22 additions & 0 deletions Curves of Constant Width and Odd-Sided Reuleaux Polygons
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@

    x[n_, \[Theta]_] := 2*Cos[Pi/(2*n)]*Cos[(1/2)*(\[Theta] + (Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1))] - Cos[(Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1)]

    y[n_, \[Theta]_] := 2*Cos[Pi/(2*n)]*Sin[(1/2)*(\[Theta] + (Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1))] - Sin[(Pi/n)*(2*Floor[(n*\[Theta])/(2*Pi)] + 1)]

    reuRotate[n_, \[Phi]_] :=
    {pts[n, \[Phi]] = Table[RotationMatrix[\[Phi]] . {x[n, \[Theta]], y[n, \[Theta]]}, {\[Theta], 0, 2*Pi, (2*Pi)/100}];
    xmin = Min[pts[n, \[Phi]][[All,1]]];
    ymin = Min[pts[n, \[Phi]][[All,2]]];
    xmax = Max[pts[n, \[Phi]][[All,1]]];
    ymax = Max[pts[n, \[Phi]][[All,2]]];
    ParametricPlot[
    RotationMatrix[\[Phi]] . {x[n, \[Theta]], y[n, \[Theta]]},
    {\[Theta], 0, 2*Pi},
    PlotStyle -> Thickness[0.009],
    PlotRange -> {{xmin, xmax}, {ymin, ymax}}, Axes -> False,
    Background -> Darker[Gray, 0.75],
    PlotRangePadding -> None
    ]
    }[[1]]

    Manipulate[reuRotate[n, \[Phi]], {n, 3, 15, 2}, {\[Phi], 0, 2*Pi}]