SmtC: Show me the Code
Ole Peter Smith
Instituto de Matemática e Estatística
Universidade Federal de Goiás
http://www.olesmith.com.br

Atividades 2
O Homem é a espécie mais insana.
Venera um Deus invisível e destrói a Natureza visível…
Sem se aperceber de que esta Natureza, que ele destrói,
é o Deus invisível que ele venera
Hubert Reeves

Ellipses

Considere os Elipses com centro no origem, e semi-eixos [;a=2;], respectivamente [; b \in [b_1,b_2] ;].
[; \Delta b=\frac{b_2-b_1}{N-1} ;]
Estabelece um executavel, Ellipsis.py, desenhando uma sequencia de [;N;] elipses com semi-eixos:
[; b^0=b_1, \quad b^i= b^{i-1} + \Delta b, \quad i=1,...,N ;]
Output: Os arquivos Ellipse/NNN.svg.
Python Listing: ../../../Code/Ellipse.py.
from math import *

from Vector import *
from Curve  import Curve

class Ellipse(Curve):
    
    #Center
    C=Vector([0.0,0.0])
    
    #Half axis'
    a=0.0
    b=0.0
    
    def __init__(self,a=1.0,b=2.0,C=None,NP=0):
        if (C):  self.C=C
        if (NP): self.NP=NP
        
        self.a=a
        self.b=b
        
        self.Closed=True
        
        return
    
    def R(self,t):
        return Vector([
            self.C[0]+self.a*cos(t),
            self.C[1]+self.b*sin(t),
        ])
    
    def PMin(self):
        return Vector([-self.a,-self.a])
    
    def PMax(self):
        return Vector([self.a,self.a])
Python Listing: ../../../Code/Ellipsis.py.
from Vector  import *
from Ellipse import Ellipse

C=O()
a=2.0

b1=1.0
b2=2.0

N=100

db=1.0*(b2-b1)/( 1.0*(N-1) )

b=b1
for n in range(N):
    curve=Ellipse(a,b,C,N)
    curve.Rs()

    curve.Init_Canvas()

    fname="Ellipse/"+("%03d" % n)+".svg"
    options={
        "stroke": 'blue',
        "style": {
            "stroke-width": 2,
        }
    }
    
    curve.Curve_SVG_Line_Write(fname,options)
    b+=db
Messages:
0 secs.