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:
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.
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:
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:
rond, rondon_desegnu | ark, arkon_provizu | o, originen | diral, aldirektu |
dist, distancon | sitp, situon_provizu | xp, x_provizu | yp, y_provizu |
dirp, direkton_provizu | etikedu | etikedlongon, etikl | punkt, punkton_montru |
sit, situon | dir, direkton | ||
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;
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: