La courbe affiche des lignes droites entre des points
et si les points sont suffisamment proches les uns des autres, vous obtiendrez
l'apparence d'une courbe lisse. En plus de son usage basique pour l'affichage de courbes,
la courbe a de puissantes capacités pour d'autres usages,
comme le tracé efficace de fonctions.
Plusieurs attributs, tels que pos
et color, peuvent être différents pour chaque point de la
courbe. Ces attributs sont stockés en tant que tableaux Numeric. Le module
Numeric pour Python fournit des possibilités de traitements puissants sur les tableaux;
par exemple, deux tableaux peuvent être ajoutés.
Les tableaux Numeric sont accessibles en utilisant les règles standard de Python
pour faire référence au nième item d'une séquence (ainsi, seq[0] est le premier item de seq, seq[1]
est le deuxième, seq[2] est le troisième,
etc). Par exemple, anycurve.pos[0] est
la position du premier point dans anycurve.
Vous pouvez donner à la courbe une liste explicite de coordonnées sous forme de tuples
comme toutes les séquences Python. Voici un exemple d'un carré 2D:
Essentiellement, (1,1) est l'abréviation de (1,1,0). Cependant, vous ne pouvez pas mélanger des points 2D et
3D dans une même liste.
Les courbes peuvent avoir une épaisseur spécifiée par le rayon de la section transverse
de la courbe (la courbe a une épaisseur ou un diamètre qui est le double du rayon):
Le rayon par défaut vaut 0, ce qui dessine une courbe fine. Un rayon non nul
donne une "épaisseur" à la courbe, mais une très petite valeur pour le rayon peut donner une courbe qui sera
trop fine pour être visible.
Dans l'exemple suivant, la fonction arange() (fournie par le module Numeric Python,
qui est importé par le module Visual, donne une séquence de valeurs de 0 à 20
avec un pas de 0.1 (n'incluant pas la dernière valeur 20).
c = curve( x = arange(0,20,0.1) ) # Dessine une hélice
c.y = sin( 2.0*c.x )
c.z = cos( 2.0*c.x )
Les attributs x, y, et z
permettent aux courbes d'être utilisées pour dessiner facilement des fonctions:
Une fonction de traçage ressemble à ceci (un programme complet!):
eqn = raw_input('Equation in x: ')
x = arange( 0, 10, 0.1 )
curve( x=x, y=eval(eqn) )
Le tracé d'une fonction paramétrique est aussi facile:
t = arange(0, 10, 0.1)
curve( x = sin(t), y = 1.0/(1+t), z = t**0.5,
red = cos(t), green = 0, blue = 0.5*(1-cos(t)) )
Voici les attributs de la courbe:
pos[] Tableau des positions
des points dans la courbe: pos[0], pos[1], pos[2]....
Le nombre courant de points est donné par len(curve.pos)
x[ ], y[ ], z[ ]
Composantes de pos; chacune vaut par défaut [0,0,0,0,...]
color[ ] Couleur
des points dans la courbe
red[ ], green[ ], blue[ ]
Composantes de couleur des points dans la courbe
radius Rayon de la section transverse de la courbe
Par défaut, radius=0 rend la courbe mince
Ajout de plus de points à une courbe
Les courbes peuvent être créées par incrémentation par la fonction append(). Un nouveau point partage par défaut les caractéristiques du dernier point.
helix = curve( color = color.cyan )
for t in arange(0, 2*pi, 0.1):
helix.append( pos=(t,sin(t),cos(t)) )
Un des nombreux usages de la courbe est de laisser une traînée derrière
un objet en mouvement. Par exemple, si ball
est une sphère en mouvement, ceci ajoutera un point à la traînée:
trail = curve()
ball = sphere()
...# Chaque fois que vous mettez à jour la position de la balle:
trail.append(pos=ball.pos)
Interpolation
Le mécanisme de tracé de la courbe est l'interpolation d'un point au suivant. Par exemple,
supposons que les trois premiers points soient rouges mais que le quatrième point soit
bleu, comme dans l'exemple suivant. Les lignes connectant les trois premiers points sont tous rouges,
mais la ligne allant du troisième point (rouge) au quatrième point (bleu) est affiché avec
un dégradé du rouge au bleu.
c = curve( pos=[(0,0,0), (1,0,0)], color=color.red
)
c.append( pos=(1,1,0) ) # ajoute un point rouge
c.append( pos=(0,1,0), color=color.blue) # ajoute un point bleu
Si vous voulez un changement brusque dans la couleur ou l'épaisseur, ajoutez simplement un autre point
à la même position. Dans l'exemple suivant, ajouter un point bleu à la même position
que le troisième point (rouge) rend la ligne finale d'un bleu pur.
c = curve( pos=[(0,0,0), (1,0,0)], color=color.red
)
c.append( pos=(1,1,0) ) # ajoute un point rouge
c.append( pos=(1,1,0), color=color.blue) # même point, bleu