Naslednji atributi (lastnosti oziroma metode) veljajo za vse objekte VPython:
visible: Če je ta atribut false (0), bo objekt neviden. Primer
krogla.visible = 0 |
Če hočemo, da bo krogla spet vidna, vpišamo kasneje
krogla.visible = 1 |
frame: Objekt damo v podani frame (glej prejšnjo stran, sestavljanje kompleksnih objektov). Primer uporabe:
krogla = sphere (frame = f) |
display: Ko sprožimo program, tvori Vpython prikazovalno okno z imenom "scene". Če ne navedemo drugale, bodo objekti tvorjeni v tem oknu. Lahko pa zahtevamo, da se objekt postavi v kakšno drugo prikazovalno okno. Na primer tako:
scena2
= display( title = "Drugo okno" )
palica
= cylinder( display = scena2 )
|
__class__ : Ime razreda nekega objekta. Tako je na primer krogla.__class__ enako "sphere", če je krogla objekt tipa "sphere". pred in za besedico "class" imamo dva podčrtaja. Imamo seznam vidnih objektov, ki ga dobimo z scene.objects. če je objekt "obj" na tem seznamu, lahko ugotovimo tip (pravzaprav razred) tega objekta z obj.__class__.
__copy()__ : Tako dobimo kopijo nekega objekta. TPred in za "copy()" imamo dva podčrtaja. Če ne podamo drugih argumentov, bomo tako dobili nov objekt, enak prejšnjemu in na istem položaju, kar verjetno ne želimo. Funkcija __copy__() uporablja seznam parov "lastnost=vrednost", ki naj veljajo za novi objekt. Tako lahko na primer kopijo objekta prikažemo v drugem oknu:
nobiObjekt = stariObjekt.__copy__( display=novoOkno) |
Omejitev: če je prvotni objekt del sestavljenega objekta (je v frame) in naj bi bil novi objekt v drugem oknu, moramo v tem oknu najprej tvoriti nov "frame" za novi objekt. Še en primer, kako celotno sceno iz enega prikazovalnega okna kloniramo v drugo, prej definirano okno:
def clone_universe( new_display,
old_display): # Create a dictionary of frames in the old display # to the corresponding frames in the new display. frames = dict() # Initialize the lookup dictionary for obj in old_display.objects: if obj.__class__ == frame: frames[obj] = obj.__copy__( frame=None, display=new_display) # For each old reference frame that was within another reference frame, # place the new reference frame within the appropriate frame in the new # display. Here old is an object and new is its frame in the new display. for old, new in frames.iteritems(): if old.frame: new.frame = frames[old.frame] # Copy over the universe. for obj in old_display.objects: if obj.__class__ == frame: # Already taken care of above. continue if obj.frame: # Then initialize with the corresponding reference frame in the new # display. obj.__copy__( display=new_display, frame=frames[obj.frame]) else: # Don't need to care about the frame attribute, since it is None. obj.__copy__( display=new_display) |
Objekte cylinder, arrow, cone, pyramid, sphere, ring, box, in ellipsoid (ne pa curve ali convex) lahko zavrtimo okrog določenega tečaja (origin). Vrtenje se meri v radianih v nasprotni smeri od urinega kazalca okrog črte, ki jo določata "origin" in" origin+axis":
Uporabljamo barvni sistem RGB in določamo barvo v deležih rdeče. zelene in modre komponente. V tem sistemu je bela barva z največjim deležem rdeče, zelene in modre barve (1, 1, 1). Pri črno so vsi trije deleži enaki 0, torej (0, 0, 0). Popolnoma rdeča barva je (1, 0, 0); torej brez drugih dveh komponent.
Tu je še nekaj primerov RGB barv in kako jih poimenujemo v Vpythonu:
(1,0,0) color.red | (1,1,0) color.yellow | (0,0,0) color.black |
(0,1,0) color.green | (1,0.5,0) color.orange | (1,1,1) color.white |
(0,0,1) color.blue | (0,1,1) color.cyan | |
(1,0,1) color.magenta |
Lahko pa tudi sami tvorimo lastne barve. na primer:
(0.5, 0.5, 0.5) temnosiva barva
(1,0.7,0.2) bakrena barva
Objekta v Vpythonu ne zbrižšemo, pač pa ga naredimo nevidnega
krogla.visible = 0 |
Tehnično pojasnilo: Če bi kasneje spet uporabili ime "krogla" za kaj drugega, morda za tvorbo novega objekta, bi Vpython sprostil spomi,, ki ga je zasedala prej narejena krogla. (če tega objekta slučajno ne naslavlja kakšno drugo ime.
rate( frekvenca ) |
Tako bi na primer rate(50) zaustavil rtačunanja tako dolgo, da bi zagotovil pretek najmanj 1.0/50.0 sekunde (če pa je ta čas že potekel, se računanje ne zaustavi).