IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Description of Objects in VPython

Des objets composites avec une structure (frame)

Vous pouvez grouper des objets ensemble pour créer un objet composite qui peut être déplacé et tourné comme si c'était un unique objet. Créez une structure, et associez des objets à cette structure:

f = frame()

cylinder(frame=f, pos=(0,0,0), radius=0.1, length=1, color=color.cyan)

sphere(frame=f, pos=(1,0,0), radius=0.2, color=color.red)

f.axis = (0,1,0)

f.pos = (-1,0,0)

Par défaut, frame() est à la position (0,0,0) et les axes sont dans la direction x (1,0,0). Le cylindre et la sphère sont créés dans la structure. Lorsque n'importe lequel des attributs de la structure est modifié (pos, x, y, z, axis, ou up), l'objet composite est réorienté et repositionné.

Un autre attribut de la structure est objects, qui est une liste des objets actuellement visibles et contenus dans la structure (la liste ne comprend pas les objets qui sont actuellement non visibles). Si vous voulez rendre tous les objets rouges dans la structure, appliquez les instructions suivantes (on suppose que la structure est nommée f):

for obj in f.objects:
obj.color = color.red

Si vous utilisez cette méthode pour rendre tous les objets invisibles, la liste f.objects sera vide. Si vous avez besoin d'une liste contenant tous les objets, aussi bien visibles que invisibles, vous devez maintenir votre propre liste d'objets.

Si ball est un objet de la stucture, ball.pos est la position locale à la structure, et non la position actuelle dans "l'espace monde". Voici une routine qui calcule la position d'un vecteur tel que ball.pos dans l'espace entier:

def world_space_pos(frame, local):
"""Retourne la position de local dans l'espace entier."""
x_axis = norm(frame.axis)
z_axis = norm(cross(frame.axis, frame.up))
y_axis = norm(cross(z_axis, x_axis))
return frame.pos+local.x*x_axis+local.y*y_axis+local.z*z_axis


Copyright © 2006 Guillaume et Yoann Duriaud. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.