De la versio 0.9.92, la testudo povas eliri el la ebeno por moviĝi en la spaco. Por tio oni uzu la primitivon perspektive. Bonvenon en la mondon de la 3D-perspektivo!
Por prezenti la spacon tridimensian en ebeno nur dudimensia, oni uzu projektan perspektivon. Kamerao rigardas la 3D-scenon kaj ĝia vidado estas projektata sur intermezan ebenon. Jen skemo ilustranta tiun teĥnikon.
Kelkaj primitivoj ebligas loki la kameraon laŭ via volo, kun la projekta ekrano ĝuste je duona distanco.
Sur la ebeno, testudan direkton difinas nur l’ angulo rilate al la vertikalo. En la spaco, la direkton donas 3 angulaj valoroj:
Efektive, por moviĝi en la spaco, la testudo kondutas kiel aviadilo. Jen malgranda skemo ebliganta prezenti tiujn magnitudojn:
La flankklino |
La frontklino |
La direkto |
Tio povas ŝajni komplikita komence, sed rimarku ke multaj aferoj rilatas al kutimaj movoj sur l’ ebeno.
Sama konduto kiel sur l’ ebeno.
Same kondutas kiel sur l’ ebeno.
La testudo pivotas dekstren laŭ ĝia longeca akso je n gradoj.
La testudo pivotas madekstren laŭ ĝia longeca akso je n gradoj.
La testudo pivotas supren laŭ ĝia larĝeca akso je n gradoj.
La testudo pivotas supren laŭ ĝia larĝeca akso je n gradoj.
Sur l’ ebeno por grafiki kvadraton je latero 200:
ripetu 4 [an 200 dn 90] |
Tiuj komandoj restas validaj en la spaco, kaj la kvadrato estas desegnita perspektive. Se oni turnus «malsupren» la testudon je 90 gradoj oni povus grafiki tiam novan kvadraton.
ev ripetu 4 [an 200 dn 90] malsupren 90 ripetu 4 [an 200 dn 90] |
Restas trejni sin por lerni ĉiun eblan direkton!
Necesas ĉiuokaze kompreni ke la tri turnaj primitivoj estas reciproke ligitaj. Por ekzemplo, provu la jenan sinsekvon:
ev mdfn 90 supren 90 dfn 90 |
La movo farita estus egala al fari
maldekstren 90 (provu simuli la
testudon per via mano, ekzemple...). |
Ĉiuj sekvaj primitivoj valoras en la spaco kaj sur l’ ebeno. La sola diferenco estas la naturo de la argumentoj atendataj aŭ la naturo de la respondoj. Por ekzemplo, la primitivo sitp ou situon_provizu atendas ĉiam liston kiel argumenton, sed nun necesas ke tiu listo enhavu tri nombrojn (x;y;z) reprezentantajn la spacajn koordinatojn de la dezirata punkto. Jen resumo de tiuj komandoj:
|
Tiu primitivo movas la testudon al la punkto kun koordinatoj indikitaj. Ĝi atendas tri argumentojn; tiu primitivo similas al sitp krom ke la koordinatojn oni ne indikas en listo.
Ekzemplo, xyzp -100 200 50: movu la testudon al punkto je koordinatoj x = −100;y = 200;z = 50.
Tiu primitivo movas la testudon al punkto kies koordinato z egalas l’ argumenton indikitan. Ĝi atendas do nombron kiel argumenton; tiu primitivo estas komparebla al xp kaj yp.
Loku la testudon laŭ la dezirata klino. Tiu primitivo atendas liston enhavantan tri nombrojn, respektive la flankklinon, la frontklinon kaj la direkton.
Ekzemple, orientadon_provizu [100 0 58]: la testudo iĝos flankklina je 100 gradoj, frontklina je 0 gradoj kaj direkta je 58 gradoj.
Redonas l’ orientadon de la testudo kiel liston enhavantan respektive la flankklinon, la frontklinon kaj la direkton. Atentu l’ ordon de tiuj nombroj; ekzemple, se l’ orientado estas [100 20 90], tio signifas ke por atingi la saman orientadon, de la komenca situo (ekzemple post viŝi l’ ekranon), necesos tajpi:
dekstraflanken 100 supren 20 dekstren 90 |
Se vi permutus l’ ordon de tiuj instrukcioj, vi ne akirus l’ orientadon deziratan!
Pivotigu la testudon laŭ ĝia longeca akso tiel ke ĝi prenu l’ frankklinon indikitan.
Redonas la nunan valoron de la flankklina angula.
Pivotigu la testudon laŭ ĝian larĝeca akso tiel ke ĝi prenu la frontklinan angulon indikitan.
Redonas la nunan valoron de la frontklinan angulon.
XLOGO havas modelilon 3D kiu ebligas montri vian tridimensian grafikaĵon en sceno kun lumoj kaj mallumoj. Tiu modulo uzas la bibliotekon JAVA3D kiu instalitu se vi volas profiti tiun kapablon.
Jen kiel uzi la modelilon:
Dum oni desegnas, post ĉiu grupo de komandoj, indiku al modelilo la geometriajn formojn kiujn ĝi konservu por estonta grafikado. Eblas registri plurlaterojn (surfacojn), liniojn, punktojn kaj eĉ tekstojn. Por tio, oni havas la jenajn primitivoj:
Ĉiun sekvan movon oni registros por krei plurlateron.
La aro de la verticoj tra kiuj pasis la testudo post la voko de por_edro faras kvarlateron kies koloron establas l’ aro de verticoj. Tiu primitivo finas krei la plurlateron.
Ĉiun sekvan movon registru por krei sinsekvon de segmentoj.
La aro de verticoj tra kiuj la testudo pasis post voki linia_difino materialigas plursegmentan linion. La primitivo finas difini la linion.
Ĉiun sekvan movon registru por krei aron de punktoj.
Finu registri la aron de punktoj tra kiuj la testudo pasis post voki punkta_difino
Ĉiam kiam l’ uzulo afiŝos tekston per la primitivo etikedu, ĝin oni registros por esti uzota de la modelido 3D.
Finu registri la tekstojn afiŝatajn.
Ekrulu la modelilon 3D; ĉiun objekton antaŭe registritan oni afiŝu sur l’ ekranon.
Ĉiu faco estas kvadrato kun latero je 400 testudpaŝojn. Jen la programo;
por kvadrato # registru la verticojn de l’ kvadrato por_edro ripetu 4 [an 400 dn 90] fino_edro fino por simplaKubo # flava kubo ev perspektive skolp flavan # flankaj facoj ripetu 4 [kvadrato l dn 90 an 400 mdn 90 dfn 90 ml] # malsupra faco malsupren 90 kvadrato supren 90 # supra faco an 400 malsupren 90 kvadrato # vidigo tridimensie_vidigu fino |
Rulu la komandon simplaKubo:
Post anstataŭigi en la proceduro kvadrato, por_edro per linia_difinu kaj fino_edro per linia_difinhaltu:
Se oni uzus punkta_difino kaj punkta_difinhaltu anstataŭ linia_difinu kaj linia_difinhaltu, oni havus sur l’ ekrano nur la 8 verticojn de la kubo. Tiujn du primitivojn oni uzu por vidigi punktonubojn en la spaco.
Por klarigi viajn 3D-scenojn vi povas uzi kvar lumojn. Apriore, la scenon klarigas du lumoj el tipo punkta. Klaku sur unu el la 4 ampuloj en la 3D-modelilo; la jena dialogfenestro aperos tiam:
Eblas pluraj elektoj de lumoj:
Plej bone oni simple provu ilin por kompreni ilian funkciadon!
Vi povas aldoni efikon kvazaŭ nebulan al via 3D-sceno. Klaku la butonon nuboforman en la 3D-modelilon; jen la dialogfenestro kiu aperas:
Du elekteblaj nebultipoj:
Ekzemplo kun grada nebulo: