## Plot parametric equation of rotated ellipse

GS(20190309) : A simple example to show how to rotate an ellipse on canvas.

```# EllipseRotate.tcl
# Author:      Gerard Sookahet
# Date:        09 March 2019
# Version:     0.1
# Description: Simple graphical example of parametric equation of rotated ellipse
#
# xo,yo : center of the ellipse
# angle : rotation angle from 0 to 7 with the scalebar
# t : parameter

package require tk
bind all <Escape> {exit}

proc EllipseRotate {xo yo a b angle t} {

set cosa [expr {cos(\$angle)}]
set sina [expr {sin(\$angle)}]
set cost [expr {cos(\$t)}]
set sint [expr {sin(\$t)}]
set x [expr {\$xo + \$a*\$cosa*\$cost - \$b*\$sina*\$sint}]
set y [expr {\$yo + \$a*\$sina*\$cost + \$b*\$cosa*\$sint}]

return [list \$x \$y]
}

proc EllipsePlot {w xo yo a b pi angle} {
\$w delete all

lassign [EllipseRotate \$xo \$yo \$a \$b \$angle 0] x2 y2

for {set p 0} {\$p <= 720} {incr p} {
set t [expr {\$pi*\$p/360}]
lassign [EllipseRotate \$xo \$yo \$a \$b \$angle \$t] x1 y1
.c create line \$x1 \$y1 \$x2 \$y2 -fill blue -width 3
set x2 \$x1
set y2 \$y1
}
}

set width 600
set height 400
set pi 3.1415926
set xo [expr {\$width/2}]
set yo [expr {\$height/2}]
set a 200
set b 100
set angle [expr {\$pi/6}]

pack [canvas .c -width \$width -height \$height -background black]
pack [scale .sc -from 0 -to 7 -length 240 -resolution .1 \
-orient horiz -bd 1 -showvalue true -variable angle \
-command {EllipsePlot .c \$::xo \$::yo \$::a \$::b \$::pi}]```