Sunteți pe pagina 1din 5

Desenarea 3D

Informatiile necesare construirii imaginii unui corp 3D se afla stocate in baza de date.
Aceste informatii sunt multimi de puncte ce vor fi proiectate pe ecran, si ordinea in care
anumite puncte trebuie unite intre ele. Punctele sunt organizate sub forma de liste de
vertexuri (ca la polilinii). Un vertex este un punct de pe suprafata unui model in care se
intalnesc doua sau mai multe linii folosite in reprezentarea corpului respectiv. In
AutoAD, lista de vertexuri este delimitata de doua liste! la inceput lista care ne da tipul
entitatii (3D"#$%, P&'('I)#, P*A# + de fapt, numele entitatii va fi ,P&'('I)#,,
diferenta dintre ele facandu+se prin coduri + vezi Anexa), iar la sfarsit o lista de tip
,$#-#)D,. Intre aceste doua liste se afla listele corespunzatoare vertexurilor, care
contin in principal coordonatele nodurilor respective!
( ... (0 . "VERTEX") (8 . "0") (10 x y z) ... )
Un obiect 3D poate fi construit din linii (reprezentare de tip ,.ireframe,) sau din fatete
(portiuni de suprafata), adica prin comanda #/P'&D# vom obtine entitati de tip 'I)#
sau 3D*A#. "anipularea si modificarea obiectelor 3D se pot reduce la transformarea
coordonatelor unei multimi de puncte (vertexurile). Pentru a vizualiza un obiect in
diverse pozitii, la diferite distante fata de observator si a+l modifica dupa o anumita lege,
se folosesc transformari globale 3D! translatia, rotatia, marirea sau micsorarea la scara,
simetria etc. In general, comenzile AutoAD de desenare sau editare 0D se pot extinde si
la 3D, eventual cu sc1imbarea sistemului de coordonate (U$). De exemplu, prin "&2#
se poate deplasa un obiect atat in plan, cat si in spatiu3 in sc1imb, o comanda de tipul
*I''#4, &**$#4 sau 45I" nu lucreaza decat in plan, iar pentru a sc1imba planul de
lucru se va folosi comanda U$.
Crearea obiectelor 3D
rearea unui corp 3D presupune introducerea listei de vertexuri (explicit sau pe baza
unor reguli si eventual a unor obiecte existente). In cazul entitatilor simple (linii si
polilinii), introducerea datelor se face la fel ca la desenarea in plan. omenzile sunt 'I)#
(inainte exista 'I)# si 3D'I)#3 acum 'I)# accepta si puncte 0D, si puncte 3D) si
3DP!", iar sintaxa lor este asemanatoare cu cea de la 'I)# (in 0D) si P'I)#. & retea
de linii se creeaza cu comanda 3D#E$%, iar entitatea rezultata va fi de tip P&'('I)#
(putem sa spunem ca este de tip 3D"#$%, pentru ca exista diferente intre ea si poliliniile
obisnuite). $intaxa comenzii este!
ommand! 3D"#$%
"es1 " size! 3 (3 linii)
"es1 ) size! 0 (0 coloane)
2ertex (6,7)! punct
2ertex (7,7)! punct
2ertex (7,6)! punct
2ertex (7,7)! punct
2ertex (0,6)! punct
2ertex (0,7)! punct
5ezultatul va fi o suprafata de tip 3D"#$% (arata ca o plasa de sarma), totdeauna
desc1isa. Pentru a o inc1ide, se poate folosi comanda P#DI4, optiunile "close si )close.
In baza de date apare o entitate de tip P&'('I)#, care se deosebeste de poliliniile
obisnuite prin listele 87 si 80. 'ista 87 contine valoarea lui ", iar 80 pe a lui )!
(... (6 . ,P&'('I)#,) ... (76 6.6 6.6 6.6) ... (87 . 3) (80 . 0) ...)
+ urmeaza listele vertexurilor, iar la sfarsit o lista de tip $#-#)D.
& entitate de tip 3D"#$% poate fi privita ca o matrice, ale carei elemente sunt
vertexurile. " reprezinta numarul de linii, iar ) numarul de coloane. omanda 3D"#$%
este incomoda cand se introduc toate punctele direct, de la tastatura, dar este usor de
utilizat prin programe Auto'I$P. De exemplu, fisierul *P'&4.'$P, din pac1etul
AutoAD3 iata o portiune din el!
(defun fplot (fcn xrange 9range res : ce stepx step9 i ; x 9)
(set< x (car xrange)
stepx (: (+ (cadr xrange) x) (float res))
step9 (: (+ (cadr 9range) (car 9range)) (float res))
i 6)
(set< ce (getvar ,cmdec1o,))
(setvar ,cmdec1o, 6)
(command ,3Dmes1, res res)
(.1ile (= i res)
(set< ; 6
9 (car 9range))
(.1ile (= ; res)
(set< ; (7> ;)
9 (> 9 step9))
(command (list x 9 (appl9 fcn (list x 9))))
)
(set< i (7> i)
x (> x stepx))
)
(setvar ,cmdec1o, ce)
)
$uprafata obtinuta cu 3D"#$% este alcatuita din elemente de tip 3D&'CE . 3D*A#
este ec1ivalentul 3D al comenzii (si tipului de entitate) $&'ID. olturile ei sunt tot
vertexuri, unite intre ele prin linii, dar spatiul dintre linii este considerat opac. Poate fi
umplut folosind comanda $%AD#. Daca am fi desenat o suprafata din linii, am fi obtinut
o retea de tip .ireframe, asupra careia nu se pot aplica comenzile %ID# si $%AD#. &
suprafata alcatuita din 3D*A# poate fi obtinuta si cu comanda P&'CE, care are sintaxa
asemanatoare cu 3D"#$%, adica trebuie specificat fiecare vertex, dar nu mai trebuie
introduse valori pentru " si ), deoarece fatetele (3D*A#) pot fi asezate arbitrar.
*iecare element al suprafetei poate avea culoarea si stratul diferite de ale celorlalte
elemente. )umarul de vertexuri nu este limitat. Pentru fiecare vertex introdus, se vor cere
legaturile cu celelalte vertexuri, pentru a forma o fateta. )umarul de laturi ale acesteia nu
este limitat decat de numarul vertexurilor. $intaxa!
ommand! P*A#
2ertex 7! punct
2ertex 0! punct
...................
2ertex n! #nter
*ace 7, vertex 7! (nr. intreg)
*ace 7, vertex 0! #nter
*ace 0, vertex 7! ........
In baza de date apare tot o entitate de tip P&'('I)#, care in listele 87 si 80 va contine
numarul de vertexuri si respectiv numarul de fatete pe care acestea le determina. 'istele
vertexurilor sunt de doua tipuri! intai cele ale vertexurilor introduse, apoi pentru fiecare
dintre acestea, mai apare o lista care contine legaturile cu celelalte vertexuri (listele 87,
80, 83 si 8?). )umerele care apar in listele de legaturi sunt numerele de ordine ale
vertexurilor introduse, aflate la inceputul succesiunii de liste de vertexuri. Daca sunt mai
mult de patru laturi, apar in listele 87...8? si numere negative, care reprezinta legatura cu
lista vertexului urmator sau precedent. a si 3D"#$%, P*A# este o comanda usor de
apelat din programe Auto'I$P.
Alte comenzi cu care se pot genera suprafete!
+ #dgesurf + o suprafata marginita de patru curbe
+ 5evsurf + suprafata obtinuta prin rotatia unui obiect in ;urul unei axe
+ 5ulesurf + suprafata obtinuta prin deplasarea unei linii (generatoare) cu capetele asezate
pe doua contururi inc1ise sau desc1ise
+ 4absurf + suprafata obtinuta prin deplasarea unui contur intr+o directie specificata.
'ista care, in baza de date, este asociata unei linii 3D este aceeasi cu cea asociata unei
linii 0D (la care aveam coordonata @ nula). Pentru 3D*A#, intalnim liste de forma!
(... (6 . ,3D*A#,) (A . ,6,) (76 x7 97 z7) (77 x0 90 z0) (70 x3 93 z3) (73 x3 93 z3) ...(86
. n) ...)
unde 76, 77, 70 si 73 sunt constructorii listelor colturilor fatetei, iar lista 86 contine
numarul laturii invizibile (poate fi 6, daca toate sunt vizibile)!
7 + prima latura invizibila
0 + a doua latura invizibila
? + a treia latura invizibila
A + a patra latura invizibila.
'(isarea )esenelor 3D
1iar cand desenam un obiect tridimensional, ecranul monitorului este tot plan
(aproximativ), deci desenul de pe ecran va fi o proiectie a obiectului nostru. In general,
proiectiile sunt aplicatii care duc puncte din spatii cu n dimensiuni in spatii cu mai putine
dimensiuni. Proiectia unei imagini pe ecran este o transformare prin care punctele din
spatiul tridimensional sunt duse intr+un spatiu cu 0 dimensiuni. In AutoAD se folosesc
doua tipuri de proiectii! proiectia paralela si proiectia perspectiva. #xista doua tipuri de
proiectii paralele!
+ proiectia ortogonala paralela, pentru care directia de proiectie coincide cu normala la
planul de proiectie3
+ proiectia oblica, pentru care directia de proiectie difera de normala la planul de
proiectie.
Proiectia ortogonala paralela (ortografica) este folosita atunci cand se reprezinta
obiectele in elevatie, plan sau profil (cele 3 vederi folosite in desenul te1nic). In aceste
cazuri, planul de proiectie este perpendicular pe una din axele sistemului de referinta. $e
pastreaza distantele si ung1iurile.
In AutoAD, aceste vederi sunt obtinute privind desenul dintr+unul din punctele (6,6,7),
(6,7,6) sau (7,6,6)3 adica observatorul priveste in lungul unei axe. Definirea punctului din
care este privit obiectul se face cu comanda 2P&I)4 (2ie. P&I)4). Alte tipuri
particulare de proiectii ortogonale sunt proiectiile axonometrice, pentru care planul de
proiectie nu mai este perpendicular pe o axa a sistemului de referinta. Un exemplu este
proiectia axonometrica izometrica, pentru care directia de proiectie face ung1iuri egale cu
cele 3 axe ale sistemului de referinta. $e pastreaza paralelismul liniilor, dar se
denatureaza ung1iurile. Proiectia axonometrica izometrica poate fi obtinuta privind
obiectul (sau obiectele) din punctul (7,7,7) (la 2P&I)4) sau folosind comanda
I$&P'A)#. "odificand punctul de observare, se pot obtine si alte tipuri de proiectii
paralele3 se pot da orice coordonate pentru punctul de observare.
$intaxa comenzii 2P&I)4!
ommand! 2P&I)4
5otate: =2ie. pointB (6,6,7)!
Punctul de observare implicit (la inceperea unui desen nou) este (6,6,7).
Proiectia perspectiva creeaza imagini similare celor obtinute prin fotografiere, mai
realiste decat cele obtinute prin proiectia paralela.
In proiectia perspectiva, liniile paralele intre ele si neparalele cu planul de proiectie par
sa convearga intr+un punct numit ,punct de fuga,. Daca observatorul este fix, atunci se
pot observa toate obiectele situate in interiorul unui ,con de vedere,. In aplicatiile pe
calculator se inlocuieste conul de vedere cu o piramida de vedere. #cranul este o
directoare a piramidei de vedere care impreuna cu pozitia observatorului determina
complet aceasta piramida.
#xista doua metode de obtinere a proiectiei perspective a unui corp 3D!
+ prin proiectarea fiecarui punct 3D pe planul ecranului, pastrandu+se in memorie atat
punctul rezultat, cat si originalul3
+ prin aplicarea unei transformari 3D (transformare perspectiva) care deformeaza corpul
astfel incat proiectia paralela a corpului obtinut sa coincida cu proiectia perspectiva a
celui initial. In memorie, imaginea va fi stocata doar prin coordonatele punctelor care
alcatuiesc corpul transformat.
In AutoAD, proiectia perspectiva a unui corp poate fi obtinuta prin comanda D2I#C
(D9namic 2I#C). Prin aceasta comanda se poate obtine si proiectia paralela, fiind mai
expresiva decat 2P&I)4 (dar mai lenta). Pentru alegerea dinamica a punctului de
observare (cand apare cererea ,$elect ob;ects!,) se va selecta un grup de entitati care vor
fi rotite in functie de pozitia observatorului (Amera) si a punctului observat (4Arget).
Daca la ,$elect ob;ects!, se raspunde cu #nter, AutoAD va desena pe ecran o casuta,
care va fi rotita in locul obiectelor desenate de utilizator. Pentru a se trece in proiectie
perspectiva este suficient sa se aleaga o distanta nenula (optiunea ,Distance,). 5evenirea
din proiectie perspectiva in proiectie paralela se face cu ,&ff,.
'ista completa a optiunilor comenzii D2I#C!
Amera: 4Arget: Distance: P&ints: PAn : @oom: 4Cist: 'ip: %ide: &ff: Undo: =e/itB!
Acest prompter va fi repetat pana cand se va opta pentru parasirea comenzii (e/it).
elelalte optiuni vor fi amintite in lista completa a comenzilor AutoAD.
Pentru a afisa mai multe vederi ale unui corp pe ecran, se foloseste comanda 2P&54$.
*iecare din ferestrele obtinute va putea contine o vedere a corpului desenat (o proiectie).
& modificare facuta intr+una din ferestre va afecta si celelalte vederi, pentru ca toate
vederile sunt create pornind de la aceeasi baza de date, deci modificarea bazei de date
duce la modificarea tuturor vederilor. omenzile de afisare (DI$P'A() aplicate unui
2P&54 nu le afecteaza neaparat si pe celelalte (doar 5#D5ACA'' si 5#D#)A''
afecteaza toate 2P&54urile).
In cazul corpurilor 3D care au si suprafete opace, o reprezentare mai realista poate fi
obtinuta stergand liniile ,ascunse, (adica liniile aflate dupa o suprafata opaca). Aceasta se
face prin comanda %ID#, sau optiunea %ID# a comenzii D2I#C (exista o asemenea
optiune si la plotare + comenzile P'&4 si P5P'&4). omanda %ID# este mare
consumatoare de timp3 reducerea timpului se poate face printr+una din urmatoarele cai!
+ ,ing1etarea, (freeze) straturilor care nu contin informatii necesare
+ reprezentarea desenului intr+o fereastra cat mai mica (@&&" CI)D&C) si
regenerarea lui (5#D#))
+ utilizarea unui calculator mai puternic.
Asemanatoare comenzii %ID# este comanda $%AD#, care produce un fel de umbre
(depinde si de tipul monitorului). Aceasta, precum si celelalte comenzi care se refera la
lucrul cu obiecte 3D (desenare, editare, afisare) vor fi amintite in sectiunea care cuprinde
lista tuturor comenzilor AutoAD.

S-ar putea să vă placă și