capitolul 5

44
Elemente de grafică asistată 131 5. APLICAŢII REZOLVATE ALE UNOR PROBLEME TEORETICE DE GEOMETRIE DESCRIPTIVĂ Aspectele teoretice arătate în capitolele anterioare pot fi aplicate pentru reprezentarea automată, vizualizarea şi verificarea unor probleme de geometrie descriptivă sau analitică, cum sunt reprezentările în dublă sau triplă proiecţie ortogonală a unor poliedre, intersecţii de poliedre, verficarea unor probleme de intersecţie etc. Totodată, această abordare oferă o imagine mai sugestivă a problemei abordate, este mai sugestivă şi mai captivantă. 5.1 Reprezentarea prismelor şi a piramidelor Fie, de exemplu, prisma triunghiulară ABCA 1 B 1 C 1 . Proiecţiile verticale şi orizontale ale punctelor A, B, C şi A 1 se obţin prin introducerea coordonatelor acestor puncte la cererile repetate ale programului. Cele ale punctelor B 1 şi C 1 se obţin ţinând cont că bazele ABC şi A 1 B 1 C 1 sunt congruente adică, după ce se selectează poliliniile proiecţiilor bazei ABC, se poate folosi comanda “Copy”, care conservă lungimile laturilor şi mărimea unghiurilor ce se copiază (figura 5.1). 1.Prisma 1. LSP ;Prisma. LSP Desenarea dublei proiecţii ortogonale a muchiilor unei prisme triunghiulare ;Obs. – ;Autor: H.Tarziu ; Data: 15.01.2002 ; Variabile: Coordonatele varfurilor A,B, C si A 1 . (DEFUN C:Prisma ( ) (setq o1 (list 0.0 150.0)) (setq o2 (list 420.0 150.0)) (Command „pline” o1 o2 „C” ) (setq v1 (list 210 0))

Upload: mazzini1989

Post on 27-Jan-2016

5 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CAPITOLUL 5

Elemente de grafică asistată

131

5. APLICAŢII REZOLVATE ALE UNOR

PROBLEME TEORETICE DE GEOMETRIE DESCRIPTIVĂ

Aspectele teoretice arătate în capitolele anterioare pot fi aplicate pentru reprezentarea automată, vizualizarea şi verificarea unor probleme de geometrie descriptivă sau analitică, cum sunt reprezentările în dublă sau triplă proiecţie ortogonală a unor poliedre, intersecţii de poliedre, verficarea unor probleme de intersecţie etc. Totodată, această abordare oferă o imagine mai sugestivă a problemei abordate, este mai sugestivă şi mai captivantă.

5.1 Reprezentarea prismelor şi a piramidelor

Fie, de exemplu, prisma triunghiulară ABCA1B1C1. Proiecţiile verticale şi orizontale ale punctelor A, B, C şi A1 se obţin prin introducerea coordonatelor acestor puncte la cererile repetate ale programului. Cele ale punctelor B1 şi C1 se obţin ţinând cont că bazele ABC şi A1B1C1 sunt congruente adică, după ce se selectează poliliniile proiecţiilor bazei ABC, se poate folosi comanda “Copy”, care conservă lungimile laturilor şi mărimea unghiurilor ce se copiază (figura 5.1).

1.Prisma 1. LSP ;Prisma. LSP Desenarea dublei proiecţii ortogonale a muchiilor

unei prisme triunghiulare ;Obs. – ;Autor: H.Tarziu ; Data: 15.01.2002 ; Variabile: Coordonatele varfurilor A,B, C si A1. (DEFUN C:Prisma ( )

(setq o1 (list 0.0 150.0)) (setq o2 (list 420.0 150.0)) (Command „pline” o1 o2 „C” ) (setq v1 (list 210 0))

Page 2: CAPITOLUL 5

Aplicaţii rezolvate

132

(setq v2 (list 210 300)) (Command „pline” v1 v2 „C”)

(SETQ a (GETPOINT „Coordonatele punctului A:”)) (setq p1 (list (- 210 (car a)) (- 150 (cadr a))))

(setq q1 (list (- 210 (car a)) (+ 150 (caddr a)))) (Command „Point” p1)

(Command „Point” q1) (Command „Pline” p1 q1 „”) (setq polilinia1 (entlast))

( SETQ b (GETPOINT „Coordonatele punctului B:”)) (setq p2 (list (- 210 (car b)) (- 150 (cadr b)))) (setq q2 (list (- 210 (car b)) (+ 150 (caddr b)))) (Command „Point” p2) (setq punctul2 (entlast)) (Command „Point” q2) (Command „Pline” p2 q2 „”) (setq polilinia2 (entlast)) (SETQ c (GETPOINT „Coordonatele punctului C:”)) (setq p3 (list (- 210 (car c)) (- 150 (cadr c))))

(setq q3 (list (- 210 (car c)) (+ 150 (caddr c)))) (Command „Point” p3) (Command „Point” q3) (Command „Pline” p3 q3 „”) (setq polilinia3 (entlast)) (Command „Pline” p1 „w” „0.8” „0.8” p2 p3 „C”) (setq polilinia4 (entlast)) (Command „Pline” q1 „w” „0.8” „0.8” q2 q3 „C”) (setq polilinia5 (entlast)) (SETQ a1 (GETPOINT „Coordonatele punctului A1:”)) (setq p11 (list (- 210 (car a1)) (- 150 (cadr a1)))) (setq q11 (list (- 210 (car a1)) (+ 150 (caddr a1)))) (Command „Point”p11) (Command „Point”q11)

(Command „Pline” p11 „w” „0” „0” q11 „C”) (setq polilinia6 (entlast)) (Command „Pline” p1 „w” „0.8” „0.8” p11 „”) (setq polilinia7 (entlast)) (Command „Pline” q1 „w” „0.8” „0.8” q11 „”) (setq polilinia8 (entlast)) (command „color” „red”)

(Command „Pline” p1 „w” „0.8” „0.8” p2 p3 „C”) (setq polilinia9 (entlast))

Page 3: CAPITOLUL 5

Elemente de grafică asistată

(command „color” „white”) ; (Command „Point” (list (- 210 (car a1)) (- 150 (cadr a1)))) ; (command „copy” „l” „” p1 p11)

(command „copy” polilinia5 „” q1 q11) (command „copy” polilinia9 „” p1 p11) (command „copy” polilinia7 „” p1 p2)

(command „copy” polilinia7 „” p1 p3) (command „copy” polilinia8 „” q1 q2) (command „copy” polilinia8 „” q1 q3) (command „copy” polilinia2 „” p1 p11) (command „copy” polilinia3 „” p1 p11) (command „copy” punctul2 „” p1 p11)

(command „zoom” „e”))

a

a'

b

b'

c

c'

a1

a1'

b1

c1

b1' c1'

Figura 5.1

În figura 5.1 (în partea stângă) este prezentată dubla proiecţie ortogonală a prismei definită de punctele A, B ,C şi A1, ale căror coordonate sunt A(120, 40, 60) B(150, 120, 20), C(60, 80, 30) şi A1(-50, 130, 150). În figura 5.1 (în partea dreaptă) este redată dubla proiecţie ortogonală obţinută automat, a aceleiaşi prisme, dar obţinută cu ajutorul funcţiei ;Prisma 2”, care introduce şi notaţiile corespunzătoare vârfurilor sale.

133

Page 4: CAPITOLUL 5

Aplicaţii rezolvate

Un program scris pentru reprezentarea celei de a treia proiecţii (pe planul lateral) a oricărui poliedru, în particular a unui tetredru sau a unei prisme, include şi coordonatele corespunzătoare proiecţiilor laterale: ordonatele vârfurilor poliedrului devin abscise cu semn schimbat, iar cotele se transformă în ordonate. De exemplu, proiecţia laterală r1 a punctului A se obţine introducând:

(SETQ a GETPOINT "Coordonatele punctului A:")) (setq p1 list (- 210 (car a)) (- 150 (cadr a)))) setq q1 (list (- 210 (car a)) (+ 150 (caddr a)))) setq r1 (list (+ 210 (cadr a)) (+ 150 (caddr a)))) Dacă se procedează astfel pentru fiecare vârf al

poliedrului şi dacă apoi se ataşază comenda “Pline” pentru reprezentarea muchiilor, se obţine aplicaţia următoare, denumită “Tripla1”, care însă nu rezolvă şi vizibilitatea muchiilor. Totuşi, după cum se va vedea, acest lucru nici nu este necesar pentru rezolvarea problemelor de determinare a secţiunilor plane prin poliedre.

În figura 5.2 (în partea stângă), este redată tripla proiecţie ortogonală a tetraedrului ale cărui vârfuri au coordonatele A(140, 20,130), B(120, 130, 40), C(15, 60, 40) şi S(50, 110, 100), iar în figura 5.2 (dreapta) acelaşi tetraedru, dar cu introducerea automată a notaţiilor convenţionale A(a, a’, a’’), B(b, b’, b’’) etc.

a

a' a''

b

b' b''

c

c' c''

s

s' s''

Figura 5.2 134

Page 5: CAPITOLUL 5

Elemente de grafică asistată

135

Pentru reprezentarea triplei proiecţii ortogonale a muchiilor unei prisme triunghiulare (fără a stabili vizibilitatea lor, proiecţia unui model “de sârmă”), se procedează ca în exemplul următor, în care este prezentată funcţia “Tripla2”. La cererea repetată a programului (GETPOINT), sunt introduse de la tastatură coordonatele vârfurilor A, B şi C ale bazei inferioare şi al vârfului A1, omologul lui A al bazei superioare. Proiecţiile laterale, notate în interiorul programului cu “r”, au fost definite ţinând cont de proprietatea acestor proiecţii de a fi definite prin ordonatele, respectiv cotele punctelor corespunzătoare. De exemplu, pentru proiecţia laterală a punctului A, s-a introdus punctul “r1” astfel:

(setq r1 (list (+ 210 (cadr a)) (+ 150 (caddr a)))) 1.Tripla2.LSP ;Tripla2. LSP Desenarea triplei proiecţii ortogonale a muchiilor

unei prisme triunghiulare ;Obs. – ;Autor: H.Tarziu ; Data: 15.01.2002 ; Variabile: Coordonatele varfurilor (DEFUN C:Tripla2 ( ) (setq o1 (list 0.0 150.0))

(setq o2 (list 420.0 150.0)) (Command "xline" o1 o2 "" ) (setq v1 (list 210 0)) (setq v2 (list 210 300)) (Command "xline" v1 v2 "" ) (SETQ a (GETPOINT "Coordonatele punctului A:")) (setq p1 (list (- 210 (car a)) (- 150 (cadr a)))) (setq q1 (list (- 210 (car a)) (+ 150 (caddr a)))) (setq r1 (list (+ 210 (cadr a)) (+ 150 (caddr a)))) (Command "Point" p1) (Command "text" (list (+ (car p1) 8) (+ (cadr p1) 5)) 12 0 " a ") (Command "Point" q1) (Command "text" (list (+ (car q1) 8) (+ (cadr q1) 5)) 12 0 " a' ") (Command "Point" r1) (Command "text" (list (+ (car r1) 8) (+ (cadr r1) 5)) 12 0 " a'' ") (Command "Pline" p1 q1 "") (Command "Pline" q1 r1 "")

Page 6: CAPITOLUL 5

Aplicaţii rezolvate

136

(SETQ b (GETPOINT "Coordonatele punctului B:")) (setq p2 (list (- 210 (car b)) (- 150 (cadr b)))) (setq q2 (list (- 210 (car b)) (+ 150 (caddr b)))) (setq r2 (list (+ 210 (cadr b)) (+ 150 (caddr b)))) (Command "Point" p2) (Command "text" (list (+ (car p2) 8) (+ (cadr p2) 5)) 12 0 " b ") (Command "Point" q2) (Command "text" (list (+ (car q2) 8) (+ (cadr q2) 5)) 12 0 " b' ") (Command "Point" r2) (Command "text" (list (+ (car r2) 8) (+ (cadr r2) 5)) 12 0 " b'' ") (Command "Pline" p2 q2 "") (Command "Pline" q2 r2 "") (SETQ c (GETPOINT "Coordonatele punctului C:")) (setq p3 (list (- 210 (car c)) (- 150 (cadr c)))) (setq q3 (list (- 210 (car c)) (+ 150 (caddr c)))) (setq r3 (list (+ 210 (cadr c)) (+ 150 (caddr c)))) (Command "Point" p3) (Command "text" (list (+ (car p3) 8) (+ (cadr p3) 5)) 12 0 " c ") (Command "Point" q3) (Command "text" (list (+ (car q3) 8) (+ (cadr q3) 5)) 12 0 " c' ") (Command "Point" r3) (Command "text" (list (+ (car r3) 8) (+ (cadr r3) 5)) 12 0 " c'' ") (Command "Pline" p3 q3 "") (Command "Pline" q3 r3 "") (SETQ a1 (GETPOINT "Coordonatele punctului A1:")) ; varf al

bazei superioare (setq p4 (list (- 210 (car a1)) (- 150 (cadr a1)))) (setq q4 (list (- 210 (car a1)) (+ 150 (caddr a1)))) (setq r4 (list (+ 210 (cadr a1)) (+ 150 (caddr a1)))) (Command "Point"p4) (Command "text" (list (+ (car p4) 8) (+ (cadr p4) 5)) 12 0 " a1 ") (Command "Point"q4) (Command "text" (list (+ (car q4) 8) (+ (cadr q4) 5)) 12 0 " a1' ") (Command "Point"r4) (Command "text" (list (+ (car r4) 8) (+ (cadr r4) 5)) 12 0 " a1'' ") (Command "Pline" p4 "w" "0" "0" q4 "C") (Command "Pline" q4 "w" "0" "0" r4 "C") (setq p5 (list (+ (car p4) (- (car p2) (car p1))) (+ (cadr p4) (-

(cadr p2) (cadr p1))))) (Command "Point"p5) (Command "text" (list (+ (car p5) 5) (+ (cadr p5) 5)) 12 0 " b1 ")

Page 7: CAPITOLUL 5

Elemente de grafică asistată

137

(setq q5 (list (+ (car q4) (- (car q2) (car q1))) (+ (cadr q4) (- (cadr q2) (cadr q1)))))

(Command "Point"q5) (Command "text" (list (+ (car q5) 8) (+ (cadr q5) 5)) 15 0 " b1' ") (setq r5 (list (+ 210 (- 150 (cadr p5))) (cadr q5))) (Command "Point"r5) (Command "text" (list (+ (car r5) 5) (+ (cadr r5) 5)) 15 0 " b1'' ") (setq p6 (list (+ (car p4) (- (car p3) (car p1))) (+ (cadr p4) (-

(cadr p3) (cadr p1))))) (Command "Point"p6) (Command "text" (list (+ (car p6) 8) (+ (cadr p6) 5)) 15 0 " c1 ") (setq q6 (list (+ (car q4) (- (car q3) (car q1))) (+ (cadr q4) (-

(cadr q3) (cadr q1))))) (Command "Point"q6) (Command "text" (list (+ (car q6) 8) (+ (cadr q6) 5)) 15 0 " c1' ") (setq r6 (list (+ 210 (- 150 (cadr p6))) (cadr q6))) (Command "Point"r6) (Command "text" (list (+ (car r6) 5) (+ (cadr r6) 5)) 15 0 " c1'' ") (Command "Pline" p4 q4 "C") (Command "Pline" p5 q5 "C") (Command "Pline" p6 q6 "C") (Command "Pline" q5 r5 "C") (Command "Pline" q6 r6 "C") (Command "Pline" p1 "W" "0.8" "0.8" p2 p3 "C") ; Se traseaza

muchiile prismei (Command "Pline" p4 p5 p6 "C") (Command "Pline" p1 p4 "C") (Command "Pline" p2 p5 "C") (Command "Pline" p3 p6 "C") (Command "Pline" q1 q2 q3 "C") (Command "Pline" q4 q5 q6 "C") (Command "Pline" q1 q4 "C") (Command "Pline" q2 q5 "C") (Command "Pline" q3 q6 "C") (Command "Pline" r4 r5 r6 "C") (Command "Pline" r1 r2 r3 "C") (Command "Pline" r1 r4 "C") (Command "Pline" r2 r5 "C") (Command "Pline" r3 r6 "C") (Command "zoom" "e") )

Page 8: CAPITOLUL 5

Aplicaţii rezolvate

În figura 5.3 este redată tripla proiecţie ortogonală a muchiilor prismei ale cărei vârfuri au coordonatele A(150, 110, 30), B(100, 20, 100), C(50, 70, 100) şi A1(200, 95, 120), care a fost obţinută cu ajutorul funcţiei “Tripla2”.

138

a

a' a''

b

b' b''

c

c' c''

a1

a1' a1''

b1

b1' b1''

c1

c1' c1''

Figura 5.3

În figura 5.4 este tripla proiecţie ortogonală, obţinută cu ajutorul aceluiaşi program, a prismei triunghiulare cu baza în planul de nivel z = 20, ale cărei vârfuri au coordonatele A(150, 110, 20), B(100, 20, 20), C(50, 70, 20) şi A1(200, 95, 120).

a

a' a''

b

b' b''

c

c' c''

a1

a1' a1''

b1

b1' b1''

c1

c1' c1''

Figura 5.4

Page 9: CAPITOLUL 5

Elemente de grafică asistată

În sfârşit, în figura 5.5 este redată tripla proiecţie ortogoală a unei prisme cu baza în planul de front y = 20, ale cărei vârfuri au coordonatele A(150, 20, 30), B(100, 20, 100), C(50, 20, 80) şi A1(200, 95, 120).

139

a

a' a''

b

b' b''

c

c' c''

a1

a1' a1''

b1

b1' b1''

c1

c1' c1''

Figura 5.5 O prismă triunghiulară, cu baza în planul de profil x =

30 este reprezentată în figura 5.6. Vârfurile ei au coordonatele A(30, 110, 30), B(30, 20, 100), C(30, 70, 80) şi A1(200, 95, 120).

a

a' a''

b

b' b''

c

c' c''

a1

a1' a1''

b1

b1' b1''

c1

c1' c1''

Figura 5.6

Page 10: CAPITOLUL 5

Aplicaţii rezolvate

140

Notaţiile corespunzătoare celor trei proiecţii ale vârfurilor au fost cuprinse în cadrul programului “Tripla2”, prin urmare ele vor fi introduse automat.

Stilul textului (Times new roman, bold) şi cel al punctelor sunt prestabilite de la caseta de dialog a programului AutoCAD14, dar pot fi introduse şi in cadrul programului “Tripla2”.

5.2 Probleme de intersecţie În acest subcapitol va fi prezentată automatizarea rezolvărilor, a vizualizărilor şi a reprezentărilor unor probleme de intersecţie: a dreptei cu planul, a planelor între ele, a secţiunilor plane prin poliedre, a intersecţiei plăcilor plane etc. În toate aceste tipuri de probleme, aşa cum deja este ştiut, o mare utilitate practică o au dreptele particulare numite “urmele planului”.

5.2.1 Urmele planului

Se reaminteşte că notaţia P(ph, pv’) indică planul P, a cărui urmă orizontală este ph şi verticală p’v (reamintim că urmele unui plan de poziţie oarecare sunt intersecţiile acelui plan cu planele de proiecţie). Aceste două urme, dar şi cea laterală, pot fi trasate automat, dacă se cunosc, ca variabile, coordonatele celor trei puncte care determină un plan.

În continuare, este prezentat integral un program pentru determinarea grafică a urmelor unui plan, definit prin coordonatele celor trei puncte ale sale.

Algoritmul de determinare a urmelor este cel folosit în geometria descriptivă, conform căruia urmele unei drepte conţinută într-un plan se găsesc pe urmele de acelaşi fel ale planului. S-au ales arbitrar câte două dintre cele trei puncte şi s-au găsit întâi urmele dreptelor determinate de aceste puncte.

Page 11: CAPITOLUL 5

Elemente de grafică asistată

141

URME.LSP. Determinarea urmelor unui plan definit prin coordonatele carteziene ale punctelor A, B, şi C.

OBS. Programul cere în mod repetat coordonatele punctelor. Autor: H Târziu Data: 16.03.2003-03-19 Variabile: Coordonatele punctelor A,B, şi C. (DEFUN C:urme ( ) (setq o1 (list 0.0 150.0)) (setq o2 (list 420.0 150.0)) (Command "pline" o1 o2 "C" ) (setq v1 (list 210 0)) (setq v2 (list 210 300)) (Command "pline" v1 v2 "C") (SETQ a (GETPOINT "Coordonatele punctului A:")) (setq p1 (list (- 210 (car a)) (- 150 (cadr a)))) (setq q1 (list (- 210 (car a)) (+ 150 (caddr a)))) (Command "Point" p1) (Command "text" (list (+ (car p1) 8) (+ (cadr p1) 2)) 12 0 "a") (Command "Point" q1) (Command "text" (list (+ (car q1) 8) (+ (cadr q1) 2)) 12 0 "a'") )Command "Pline" p1 q1 "") ( SETQ b (GETPOINT "Coordonatele punctului B:")) (setq p2 (list (- 210 (car b)) (- 150 (cadr b)))) (setq q2 (list (- 210 (car b)) (+ 150 (caddr b)))) (Command "Point" p2) (Command "text" (list (+ (car p2) 8) (+ (cadr p2) 2)) 12 0 "b") (Command "Point" q2) (Command "text" (list (+ (car q2) 8) (+ (cadr q2) 2)) 12 0 "b'") (Command "Pline" p2 q2 "") (SETQ c (GETPOINT "Coordonatele punctului C:")) (setq p3 (list (- 210 (car c)) (- 150 (cadr c)))) (setq q3 (list (- 210 (car c)) (+ 150 (caddr c)))) (Command "Point" p3) (Command "text" (list (+ (car p3) 8) (+ (cadr p3) 2)) 12 0 "c") (Command "Point" q3) (Command "text" (list (+ (car q3) 8) (+ (cadr q3) 2)) 12 0 "c'") (Command "Pline" p3 q3 "") (command "pline" p1 "w" "0.8" "0.8" p2 p3 "C") (command "pline" q1 "w" "0.8" "0.8" q2 q3 "C") (command "xline" p1 p2 p3 "") (command "xline" q1 q2 q3 "") (Setq i1 (inters o1 o2 p1 p2 nil))

Page 12: CAPITOLUL 5

Aplicaţii rezolvate

142

(Command "Point" i1) (Command "text" (list (+ (car i1) 8) (+ (cadr i1) 2)) 14 0 "v1 ") (command "xline" "V" i1 "") (setq i2 (list (+ 0 (car i1)) (+ 10 (cadr i1)))) (Setq i3 (inters i1 i2 q1 q2 nil)) (Command "Point" i3) (Command "text" (list (+ (car i3) 8) (+ (cadr i3) 2)) 14 0 "v1'") (Setq i4 (inters o1 o2 p2 p3 nil)) (Command "Point" i4) Command "text" (list (+ (car i4) 8) (+ (cadr i4) 2)) 14 0 "v2") (command "xline" "V" i4 "") (setq i5 (list (+ 0 (car i4)) (+ 10 (cadr i4)))) (Setq i6 (inters i4 i5 q2 q3 nil)) (Command "Point" i6) (Command "text" (list (+ (car i6) 8) (cadr i6)) 14 0 "v2' ") (Setq i7 (inters o1 o2 q1 q2 nil)) (Command "Point" i7) (Command "text" (list (+ (car i7) 8) (cadr i7)) 14 0 "h1' ") (command "xline" "V" i7 "") (setq i8 (list (+ 0 (car i7)) (+ 10 (cadr i7)))) (Setq i9 (inters i7 i8 p1 p2 nil)) (Command "Point" i9) (Command "text" (list (+ (car i9) 8) (cadr i9)) 14 0 "h1 ") (Setq i10 (inters o1 o2 q2 q3 nil)) (Command "Point" i10) (Command "text" (list (+ (car i10) 8) (cadr i10)) 14 0 "h2' ") (command "xline" "V" i10 "") (setq i11 (list (+ 0 (car i10)) (+ 10 (cadr i10)))) (Setq i12 (inters i10 i11 p2 p3 nil)) (Command "Point" i12) (Command "text" (list (+ (car i12) 8) (cadr i12)) 14 0 "h2 ") (Setq i13 (inters v1 v2 i3 i6 nil)) (Setq i14 (inters v1 v2 i9 i12 nil)) (setq i15 (list (+ 210 (- 150 (cadr i14))) (+ 150 0 ))) (Command "Point" i13) ; punctul Pz (Command "text" (list (+ (car i13) 8) (cadr i13)) 14 0 "Pz") (Command "Point" i14) (Command "Point" i15) (Setq i16 (inters v1 v2 o1 o2 nil)) (Command "Arc""c" i16 i14 i15 ) (command "color" "red") (command "xline" i3 i6 "")

Page 13: CAPITOLUL 5

Elemente de grafică asistată

(command "xline" i9 i12 "") (command "xline" i13 i15 "") (Setq i17 (inters i3 i6 o1 o2 nil)) (Command "Point" i17) ; Punctul Px (Command "text" (list (+ (car i17) 8) (cadr i17)) 14 0 "Px") (command "color" "red" "") (command "pline" i13 "w" "1.5" "1.5" i15 "") (command "pline" i13 "w" "1.5" "1.5" i17 "") (command "pline" i17 "w" "1.5" "1.5" i14 "") (Command "Zoom" "e"))

143

a

a'b

b'

c

c'v1

v1'

v2

v2'

h1'

h1

h2' h2

Pz

Px

Figura 5.7 In figura 5.7 este redată dubla proiecţie a urmelor

planului, pentru următoarele valori ale coordonatelor punctelor sale: A(-60, 120, 30), B(50,-40,140) şi C(150,20,30), iar, pentru comparaţie, în figura 5.8 este redată aceeaşi reprezentare, dar pentru valorile A(-80, 120, -10), B(40,-70,90) şi C(150, -20, -50). Programul nu redă şi urmele unor plane cu o poziţie particulară, cum sunt cele de nivel, de front sau de profil. Urmele orizontale ale dreptelor de nivel (sau verticale ale celor de front) sunt aruncate la infinit şi, în acest caz, la reprezentarea lor programul returnează “nil”. Se observă în cele două figuri cum au fost alese câte două drepte incluse în plan, cum programul stabileşte urmele acestor două drepte, le notează, le uneşte.

Page 14: CAPITOLUL 5

Aplicaţii rezolvate

a

a'

bb'

c

c'

144

v1

v1'

v2

v2'

h1'

h1

h2' h2 Pz

Px

Figura 5.8

5.2.2 Intersecţia dreptei cu planul A determina secţiunea plană a unui poliedru, înseamnă

a găsi poligonul ale cărui vârfuri sunt punctele în care muchiile acelui poliedru “înţeapă” planul de secţiune. Cu alte cuvinte, problema se reduce la determinarea intersecţiei dreptei cu planul.

Se cunosc operaţiile grafice necesare aflării dublei proiecţii ortogonale a punctului de intersecţie a unei drepte, definită prin coordonatele unor puncte ale ei, cu un plan, definit tot prin coordonatele celor trei puncte ale sale. Aceste operaţii se repetă, sunt algoritmice şi ele se deosebesc doar prin valorile acelor coordonate. De aceea, după principiul arătat anterior, se poate elabora un program care să reunească operaţiile grafice necesare. El a şi fost deja scris şi, cu ajutorul său, s-a obţinut reprezentarea dublei proiecţii ortogonale a punctului I(i, i’), din figura 5.9.

ABC(abc, a’b’c’) ∩ MN(mn, m’n’) = I(i, i’) Se cunoaşte metoda cea mai directă de determinare a

dublei proiecţii ortogonale a a punctului de intersecţie a dreptei MN(mn, m’n’) cu planul ABC(abc, a’b’c’), şi anume “metoda

Page 15: CAPITOLUL 5

Elemente de grafică asistată

planelor auxiliare proiectante”. La scrierea programului s-a folosit această metodă.

Punctele M şi N, ce determină dreapta, cât şi A,B şi C ale planului, sunt date prin coordonatele lor carteziene, care se vor introduce de la tastatură.

145

a'b

b'

c

c'

m

m'

n

n' 1'

1

2'

2

i

i'

Figura 5.9

Reprezentarea din figura 5.9 corespunde următoarelor

valori ale coordonatelor punctelor: A(-22, 145, 12), B(52, 23, 112), C(110, 25, 42), M(125, 90, 72) şi N(-42, 55, 40). Construcţia a fost raportată unui sistem de axe rectangulare, a căror origine este O(210, 150), alegându-se pentru desenare (plotare) un format A3.

În cadrul programului, punctele de intersecţie aparentă (sau reală) au fost definite cu ajutorul funcţiei “INTERS” sau “APPINT”, care, dacă sunt introduse punctele (predefinite prin funcţia “SETQ”) ce determină fiecare dintre cele două drepte, returnează punctul lor de intersecţie.

Dacă este vorba de o intersecţie care se află în afara segmenului i13 i14, atunci AutoLISP returnează “NIL”, iar dacă specificaţia “NIL” este introdusă în cadrul comenzii

Page 16: CAPITOLUL 5

Aplicaţii rezolvate

“INTERS”, atunci returnează intersecţia oriunde se află ea., ca în exemplul de mai sus.

În figura 5.10 este redată intersecţia obţinută cu ajutorul funcţiei “Defun: Inter” (pentru comparaţie cu desenul din figura 3.14) cu următoarele valori ale coordonatelor: A(-140, -90, -120), B(40,100,130), C(100, 120, 10), M(150, 30, 80( şi N(-100, 20, 90).

146

a

a'b

c

c'

m

m'

n

n' 1'

1

2'

2

i

i'

Figura 5.10

INTER.LSP. Determinarea proiecţiilor unei drepte cu un plan

definite prin coordonatele carteziene ale punctelor. OBS. Programul cere în mod repetat coordonatele punctelor. Autor: H Târziu Data: 16.03.2003-03-19 Variabile: Coordonatele punctelor A, B, C, M şi N. (DEFUN C:Inter ( ) (setq o1 (list 0.0 150.0)) ; se defineste sistemul axelor de

coordonae (setq o2 (list 420.0 150.0)) ;pe un format A3 (Command "pline" o1 o2 "C" ) (setq v1 (list 210 0)) (setq v2 (list 210 300)) (Command "pline" v1 v2 "C") (SETQ a (GETPOINT "Coordonatele punctului A:")) ; se introduc

coordonatele (setq p1 (list (- 210 (car a)) (- 150 (cadr a)))) ;punctelor ce

determina planul

Page 17: CAPITOLUL 5

Elemente de grafică asistată

147

(setq q1 (list (- 210 (car a)) (+ 150 (caddr a)))) ; ABC (Command "Point"p1) (Command "text" (list (+ (car p1) 8) (cadr p1)) 16 0 "a") (Command "Point"q1) (Command "text" (list (+ (car q1) 8) (cadr q1)) 16 0 "a'") (Command "Pline" p1 q1 "") (SETQ b (GETPOINT "Coordonatele punctului B:")) (setq p2 (list (- 210 (car b)) (- 150 (cadr b)))) (setq q2 (list (- 210 (car b)) (+ 150 (caddr b)))) (Command "Point"p2) (Command "text" (list (+ (car p2) 8) (cadr p2)) 16 0 "b") (Command "Point"q2) (Command "text" (list (+ (car q2) 8) (cadr q2)) 16 0 "b'") (Command "Pline" p2 q2 "") (SETQ c (GETPOINT "Coordonatele punctului C:")) (setq p3 (list (- 210 (car c)) (- 150 (cadr c)))) (setq q3 (list (- 210 (car c)) (+ 150 (caddr c)))) (Command "Point"p3) (Command "text" (list (+ (car p3) 8) (cadr p3)) 16 0 "c") (Command "Point"q3) (Command "text" (list (+ (car q3) 8) (cadr q3)) 16 0 "c'") (Command "Pline" p3 q3 "") (Command "Pline" p1 "w" "0.8" "0.8" p2 p3 "C") (Command "Pline" q1 "w" "0.8" "0.8" q2 q3 "C") (SETQ m (GETPOINT "Coordonatele punctului M:")) ;

Coordonatele punctelor dreptei MN (setq p4 (list (- 210 (car m)) (- 150 (cadr m)))) (setq q4 (list (- 210 (car m)) (+ 150 (caddr m)))) (Command "Point"p4) (Command "text" (list (+ (car p4) 8) (cadr p4)) 16 0 "m") (Command "Point"q4) (Command "text" (list (+ (car q4) 8) (cadr q4)) 16 0 "m'") (Command "pline" p4 "w" "0" "0" q4 "C") (SETQ n (GETPOINT "Coordonatele punctului N:")) (setq p5 (list (- 210 (car n)) (- 150 (cadr n)))) (setq q5 (list (- 210 (car n)) (+ 150 (caddr n)))) (Command "Point"p5) (Command "text" (list (+ (car p5) 8) (cadr p5)) 16 0 " n ") (Command "Point"q5) (Command "text" (list (+ (car q5) 8) (cadr q5)) 16 0 " n' ") (Command "Pline" p5 "w" "0" "0" q5 "C") (Command "pline" p4 "w" "0.8" "0.8" p5 "C")

Page 18: CAPITOLUL 5

Aplicaţii rezolvate

148

(Command "pline" q4 "w" "0.8" "0.8" q5 "C") (Setq i1 (inters q4 q5 q1 q2 nil)) ; intersectia planului de capat cu

AB (setq i2 (list (+ 0 (car i1)) (+ 10 (cadr i1)))) ; punct al liniei de

ordine (Command "Point" i1) (Command "text" (list (+ (car i1) 8) (cadr i1)) 16 0 "1' ") (Command "xline" i1 i2 "") ; linia de ordine (Setq i3 (inters i1 i2 p1 p2 nil)) ; in proiectie orizontala (Command "Point" i3) (Command "text" (list (+ (car i3) 8) (cadr i3)) 16 0 " 1 ") (Setq i4 (inters q4 q5 q2 q3 nil)) (Command "Point" i4) (Command "text" (list (+ (car i4) 8) (cadr i4)) 16 0 "2' ") (setq i5 (list (+ 0 (car i4)) (+ 10 (cadr i4)))) (Command "xline" i4 i5 "") (Setq i6 (inters i4 i5 p2 p3 nil)) (Command "Point" i6) (Command "text" (list (+ (car i6) 8) (cadr i6)) 16 0 "2 ") (Setq i7 (inters i3 i6 p4 p5 nil)) (Command "Point" i7) (Command "text" (list (+ (car i7) 8) (cadr i7)) 16 0 "i ") (setq i8 (list (+ 0 (car i7)) (+ 10 (cadr i7)))) (Setq i9 (inters i7 i8 q4 q5 nil)) (Command "Point" i9) (Command "text" (list (+ (car i9) 8) (cadr i9)) 16 0 "i' ") (Command "pline" i3 "w" "0" "0" i6 "C") (Command "pline" i9 "w" "0" "0" i7 "C") ) 5.2.3 Secţiuni plane prin poliedre În acest subcapitol vor fi prezentate câteva aplicaţii

pentru determinarea automată a poligoanelor de secţiune plană a unor piramide şi a unor prisme.

A determina secţiunea plană a unui poliedru, înseamnă a găsi poligonul ale cărui vârfuri sunt punctele în care muchiile acelui poliedru “înţeapă” planul de secţiune. Cu alte cuvinte, problema se reduce la determinarea intersecţiei dreptei cu planul. Se cunosc deja operaţiile grafice necesare aflării dublei

Page 19: CAPITOLUL 5

Elemente de grafică asistată

proiecţii ortogonale a punctului de intersecţie a unei drepte, definită prin coordonatele unor puncte ale ei , cu un plan, definit tot prin coordonatele celor trei puncte ale sale.

Folosind rezultatele obţinute cu funcţia anterioară, programul poate fi generalizat pentru intersecţiile succesive ale unui plan (de secţiune) cu muchiile unui poliedru, de exemplu cu muchiile unei prisme. Acest lucru a fost făcut la catedra de matematică fizică a Academiei Forţelor Aeriene “H. Coandă” din Braşov, obţinându-se funcţia “Defun: Sect. 2”. Programul nu rezolvă şi vizibilitatea muchiilor prismei dar, în acest stadiu, acest lucru nici nu este necesar, reprezentările prismelor putând fi considerate proiecţiile unor modele “de sârmă”

a'

b

b'

c

c'

a1

a1'

b1 c1

b1' c1'

Pz

Py

Px

q'

q

r'

r

Figura 5.11

În figurile 5.11 şi 5.12 sunt redate comparativ secţiunile

plane ale aceleiaşi prisme, cu două plane diferite, introduse prin coordonatele punctelor M, N şi P. Prisma triunghiulară ABCA1B1C1 este definită prin coordonatele vârfurilor bazei A,

149

Page 20: CAPITOLUL 5

Aplicaţii rezolvate

B şi C, plus cele ale vârfului A1 al bazei superioare. Toate aceste coordonate se vor introduce de la tastatură.

Astfel, în figura 5.11 coordonatele punctelor sunt A(-20, 120, 10 ), B(-200, 50, 100), C(-80, 20, 90), A1(150, 110, 130), M(20,90,10), N(50, -20, 110) şi P(100, 10, 20).

a

a'

b

b'

c

c'

a1

a1'

b1 c1

b1' c1'

Pz

Py

Px

p'

p

q'

q

r'

r

Figura 5.12

În figura 5.12 este păstrată aceeaşi prismă triunghiulară,

dar planul de secţiune este modificat după cum urmează: M(70, 130, 35), N(100, -10, 150) şi P(150, 60, 70). Punctele de intersecţie ale muchiilor AA1, BB1 şi CC1 cu planul (vârfurile triunghiului de secţiune), sunt respectiv Q(q, q’), R(r, r’) şi T(t, t’). Ele au fost determinate (dubla lor proiecţie ortogonală) cu ajutorul programului “Sect. 2”, care reuneşte toate operaţiile grafice necesare acestei determinări. S-a folosit metoda “planelor auxiliare proiectante, alegând succesiv, pentru fiecare muchie, câte un plan de capăt, care să includă acea muchie.

Poliliniile corespunzătoare proiecţiilor orizontală şi verticală ale acestui triunghi au fost selectate în cadrul

150

Page 21: CAPITOLUL 5

Elemente de grafică asistată

151

programului şi ele au fost haşurate folosind comanda “Bhatch” a AutoCAD-ului.

În continuare, este prezentată integral aplicaţia “Sect 2”, cu ajutorul căreia au fost obţinute secţiunile în prismele triunghiulare.

(DEFUN C:sect2 ( ) (setq o1 (list 0.0 150.0)) (setq o2 (list 420.0 150.0)) (Command "xline" o1 o2 "" ) (setq v1 (list 210 0)) (setq v2 (list 210 300)) (Command "xline" v1 v2 "" ) (SETQ a (GETPOINT "Coordonatele punctului A:")) (setq p1 (list (- 210 (car a)) (- 150 (cadr a)))) (setq q1 (list (- 210 (car a)) (+ 150 (caddr a)))) (Command "Point" p1) (Command "text" (list (+ (car p1) 8) (+ (cadr p1) 5)) 15 0 " a ") (Command "Point" q1) (Command "text" (list (+ (car q1) 8) (+ (cadr q1) 5)) 15 0 " a' ") (Command "Pline" p1 q1 "") ( SETQ b (GETPOINT "Coordonatele punctului B:")) (setq p2 (list (- 210 (car b)) (- 150 (cadr b)))) (setq q2 (list (- 210 (car b)) (+ 150 (caddr b)))) (Command "Point" p2) (Command "text" (list (+ (car p2) 8) (+ (cadr p2) 5)) 15 0 " b ") (setq punctul2 (entlast)) (Command "Point" q2) (Command "text" (list (+ (car q2) 8) (+ (cadr q2) 5)) 15 0 " b' ") (Command "Pline" p2 q2 "") ( SETQ c (GETPOINT "Coordonatele punctului C:")) (setq p3 (list (- 210 (car c)) (- 150 (cadr c)))) (setq q3 (list (- 210 (car c)) (+ 150 (caddr c)))) (Command "Point" p3) (Command "text" (list (+ (car p3) 8) (+ (cadr p3) 5)) 15 0 " c ") (Command "Point" q3) (Command "text" (list (+ (car q3) 8) (+ (cadr q3) 5)) 15 0 " c' ") (Command "Pline" p3 q3 "") ( SETQ a1 (GETPOINT "Coordonatele punctului A1:")) ; varf al

bazei superioare (setq p4 (list (- 210 (car a1)) (- 150 (cadr a1)))) (setq q4 (list (- 210 (car a1)) (+ 150 (caddr a1))))

Page 22: CAPITOLUL 5

Aplicaţii rezolvate

152

(Command "Point"p4) (Command "text" (list (+ (car p4) 8) (+ (cadr p4) 5)) 15 0 " a1 ") (Command "Point"q4) (Command "text" (list (+ (car q4) 8) (+ (cadr q4) 5)) 15 0 " a1' ") (Command "Pline" p4 "w" "0" "0" q4 "C") (setq p5 (list (+ (car p4) (- (car p2) (car p1))) (+ (cadr p4) (- (cadr

p2) (cadr p1))))) (Command "Point"p5) (Command "text" (list (+ (car p5) 8) (+ (cadr p5) 5)) 15 0 " b1 ") (setq p6 (list (+ (car p4) (- (car p3) (car p1))) (+ (cadr p4) (-

(cadr p3) (cadr p1))))) (Command "Point"p6) (Command "text" (list (+ (car p6) 8) (+ (cadr p6) 5)) 15 0 " c1 ") (setq q5 (list (+ (car q4) (- (car q2) (car q1))) (+ (cadr q4) (- (cadr

q2) (cadr q1))))) (Command "Point"q5) (Command "text" (list (+ (car q5) 8) (+ (cadr q5) 5)) 15 0 " b1' ") (setq q6 (list (+ (car q4) (- (car q3) (car q1))) (+ (cadr q4) (- (cadr

q3) (cadr q1))))) (Command "Point"q6) (Command "text" (list (+ (car q6) 8) (+ (cadr q6) 5)) 15 0 " c1' ") (Command "Pline" p1 p2 p3 "C") ; Se traseaza muchiile prismei (Command "Pline" p4 p5 p6 "C") (Command "Pline" p1 p4 "C") (Command "Pline" p2 p5 "C") (Command "Pline" p3 p6 "C") (Command "Pline" q1 q2 q3 "C") (Command "Pline" q4 q5 q6 "C") (Command "Pline" q1 q4 "C") (Command "Pline" q2 q5 "C") (Command "Pline" q3 q6 "C") (Command "Pline" p4 q4 "C") (Command "Pline" p5 q5 "C") (Command "Pline" p6 q6 "C") (SETQ m (GETPOINT "Coordonatele punctului M:")) ;Punctele

planului de sectiune MNP (setq p11 (list (- 210 (car m)) (- 150 (cadr m)))) (setq q11 (list (- 210 (car m)) (+ 150 (caddr m)))) ( SETQ n (GETPOINT "Coordonatele punctului N:")) (setq p22 (list (- 210 (car n)) (- 150 (cadr n)))) (setq q22 (list (- 210 (car n)) (+ 150 (caddr n)))) ( SETQ p (GETPOINT "Coordonatele punctului P:"))

Page 23: CAPITOLUL 5

Elemente de grafică asistată

153

(setq p33 (list (- 210 (car p)) (- 150 (cadr p)))) (setq q33 (list (- 210 (car p)) (+ 150 (caddr p)))) (Setq i1 (inters o1 o2 p11 p22 nil)) ; determinarea urmelor

planului MNP (setq i2 (list (+ 0 (car i1)) (+ 10 (cadr i1)))) (Setq i3 (inters i1 i2 q11 q22 nil)) (Setq i4 (inters o1 o2 p22 p33 nil)) (setq i5 (list (+ 0 (car i4)) (+ 10 (cadr i4)))) (Setq i6 (inters i4 i5 q22 q33 nil)) (Setq i7 (inters o1 o2 q11 q22 nil)) (setq i8 (list (+ 0 (car i7)) (+ 10 (cadr i7)))) (Setq i9 (inters i7 i8 p11 p22 nil)) (Setq i10 (inters o1 o2 q22 q33 nil)) (setq i11 (list (+ 0 (car i10)) (+ 10 (cadr i10)))) (Setq i12 (inters i10 i11 p22 p33 nil)) (Setq i13 (inters v1 v2 i3 i6 nil)) (Command "Point" i13) (Command "text" (list (+ (car i13) 8) (cadr i13)) 15 0 " Pz ") (Setq i14 (inters v1 v2 i9 i12 nil)) (Command "Point" i14) (Command "text" (list (+ (car i14) 8) (cadr i14)) 15 0 " Py ") (setq i15 (list (+ 210 (- 150 (cadr i14))) (+ 150 0 ))) (Setq i16 (inters v1 v2 o1 o2 nil)) (Command "Arc""c" i16 i14 i15 ) ; urmele planului ABC (command "xline" i3 i6 "") (command "xline" i9 i12 "") (command "xline" i13 i15 "") (Setq i17 (inters i3 i6 o1 o2 nil)) (Command "Point" i17) ; Punctul Px (Command "text" (list (+ (car i17) 8) (+ (cadr i17) 5)) 15 0 " Px ") (command "pline" i13 "w" "1.0" "1.0" i15 "") (command "pline" i13 "w" "1.0" "1.0" i17 "") (command "pline" i17 "w" "1.0" "1.0" i14 "") (Setq j1 (inters q1 q4 q11 q22 nil)) ; intersectia cu AA1 (setq j2 (list (+ 0 (car j1)) (+ 10 (cadr j1)))) ; punct al liniei de

ordine (Setq j3 (inters j1 j2 p11 p22 nil)) ; in proiectie orizontala (Setq j4 (inters q1 q4 q22 q33 nil)) (setq j5 (list (+ 0 (car j4)) (+ 10 (cadr j4)))) (Setq j6 (inters j4 j5 p22 p33 nil)) (Setq j7 (inters j3 j6 p1 p4 nil)) (setq j8 (list (+ 0 (car j7)) (+ 10 (cadr j7))))

Page 24: CAPITOLUL 5

Aplicaţii rezolvate

154

(Setq j9 (inters j7 j8 q1 q4 nil)) (Command "Point" j9) (Command "text" (list (+ (car j9) 8) (+ (cadr j9) 5)) 15 0 " p' ") (Command "Point" j7) (Command "text" (list (+ (car j7) 8) (+ (cadr j7) 5)) 15 0 " p ") (Command "pline" j9 "w" "0" "0" j7 "C") (Setq l1 (inters q2 q5 q11 q22 nil)) ; intersectia cu BB1 (setq l2 (list (+ 0 (car l1)) (+ 10 (cadr l1)))) ; punct al liniei de

ordine (Setq l3 (inters l1 l2 p11 p22 nil)) ; in proiectie orizontala (Setq l4 (inters q2 q5 q22 q33 nil)) (setq l5 (list (+ 0 (car l4)) (+ 10 (cadr l4)))) (Setq l6 (inters l4 l5 p22 p33 nil)) (Setq l7 (inters l3 l6 p2 p5 nil)) (setq l8 (list (+ 0 (car l7)) (+ 10 (cadr l7)))) (Setq l9 (inters l7 l8 q2 q5 nil)) (Command "Point" l9) (Command "text" (list (+ (car l9) 8) (+ (cadr l9) 5)) 15 0 " q' ") (Command "Point" l7) (Command "text" (list (+ (car l7) 8) (+ (cadr l7) 5)) 15 0 " q ") (Command "pline" l9 "w" "0" "0" l7 "C") (Setq s1 (inters q3 q6 q11 q22 nil)) ; intersectia cu CC1 (setq s2 (list (+ 0 (car s1)) (+ 10 (cadr s1)))) ; punct al liniei de

ordine (Setq s3 (inters s1 s2 p11 p22 nil)) ; in proiectie orizontala (Setq s4 (inters q3 q6 q22 q33 nil)) (setq s5 (list (+ 0 (car s4)) (+ 10 (cadr s4)))) (Setq s6 (inters s4 s5 p22 p33 nil)) (Setq s7 (inters s3 s6 p3 p6 nil)) (setq s8 (list (+ 0 (car s7)) (+ 10 (cadr s7)))) (Setq s9 (inters s7 s8 q3 q6 nil)) (Command "Point" s9) (Command "text" (list (+ (car s9) 8) (+ (cadr s9) 5)) 15 0 " r' ") (Command "Point" s7) (Command "text" (list (+ (car s7) 8) (+ (cadr s7) 5)) 15 0 " r ") (Command "Color" "red") (Command "pline" s9 "w" "0" "0" s7 "C") (Command "Pline" j9 "w" "1.2" "1.2" l9 s9 "C") (setq polilinia1 (entlast)) (Command "Hatch" "ansi31" 1 0 "l" "") (Command "Pline" j7 "w" "1.2" "1.2" l7 s7 "C") (setq polilinia2 (entlast))

Page 25: CAPITOLUL 5

Elemente de grafică asistată

(Command "Hatch" "ansi31" 1 0 "l" "") (Command "Zoom" "e") ) În mod analog, reunind rutinele “Urme”, “Inter”

“Sect”etc. în cadrul unui program pentru trasarea automată a secţiunilor plane prin piramide triunghiulare, a fost construită funcţia denumită “Sect.1.”.

Pe lânga faptul că la elaborarea ei se ţine cont de proprietăţile piramidei, ea realizează şi proiecţiile laterale ale vârfurilor piramidei, muchiilor acesteia şi a vârfurilor triunghiului de secţiune.

În figura 5.13 este prezentat un exemplu, în care apare tripla proiecţie ortogonală a triunghiului de secţiune M1N1P1 a suprafeţei piramidale (triunghiulare) SMNP (smnp, s’m’n’p’, s”m”n”p”) cu planul determinat de punctele AB şi C, pentru următoarele valori arbitrare ale coordonatelor acestor puncte: A(-50, 90, 20), B(10, 25, 70), C(60, 15, 30), S(200, 20, 140), M(5, 5, 10), N(60, 90, 20) P(35, 100, 70).

Figura 5.13

Pz

Py

Px

s

s' s''

m

m' m''

n

n' n''

p

p' p''

m1'

m1

m1''

n1'

n1

n1'' p1'

p1

p1''

155

Page 26: CAPITOLUL 5

Aplicaţii rezolvate

La fel ca în cazul funcţiei anterioare “Sect. 2.”, aplicaţia trasează automat şi urmele ph, pv şi pl ale planului de secţiune, notat de data asta cu ABC, care nu au fost notate în figura 5.13, dar care pot fi identificate prin cunoscutele puncte Px, Py şi Pz.

În concluzie, operaţiile grafice de determinare a dublei sau triplei proiecţii ortogonale a poligonului de secţiune plană a unui poliedru pot fi “automatizate”, adică pot fi înseriate în cadrul unui program grafic care îl reprezintă direct. Se cere doar introducerea datelor problemei, sub forma coordonatelor vârfurilor poliedrului şi ale celor care determină planul de secţiune. Acest programe pot fi generalizate şi îşi pot găsi o aplicaţie foarte utilă în determinarea poligonului (în spaţiu) de intersecţie a două poliedre, apoi, prin alte generalizări, pentru secţiun plane prin corpuri cilindro-conice.

Pz

Py

Px

s

s'

m

m'

n

n'

p

p'

m'1

n'1

p'1

m1

n1

p1

Figura 5.14 În figura 5.14, s-a reprezentat secţiunea M1N1P1 a

prismei triunghiulare SMNP(smnp, s’m’n’p’) cu planul P determinat de punctele ABC. Coordonatele acestor puncte sunt: A(20, 120, 40), B(50, -40, 140), C(100, 10, 20), S(100, 130, 150), M(-50, 10, 90), N(-10, 130, 10) şi P(-140, 50,40).

156

Page 27: CAPITOLUL 5

Elemente de grafică asistată

Programul cere în mod repetat aceste valori şi ele vor fi introduse de la tastatură.

Alte exemple sunt redate în figurile 5.15 şi 5.16 pentru următoarele valori ale coordonatelor vârfurilor: în figura 5.15, A(-20, 140,10), B(50,20,110), C(100, 40,30), S(120,90,110), M(-50,20, 100), N(-10, 110, 40) şi P(-100, 0, 80). În figura 5.16, A(-100, 0, 90), B(0, 110, 40), C(100, 10, 80), S(90, 40, 30), M(-100, 0, 120), N(-40, 120, 140), P(-10,80,0).

Pz

Py

Px

s

s'

m

m'

n

n'

p

p' m'1

n'1

p'1

m1

n1

p1

Figura 5.15 Se observă că programul, după introducerea

coordonatelor punctelor A, B şi C, trasează automat urmele planului de secţiune, cu punctele lor remarcabile Px, Py şi Pz.

Programul este astfel alcătuit încât secţiunea care se reprezintă este a suprafeţei piramidale corespunzătoare vârfului S şi bazei MNP. La anumite valori ale coordonatelor acestor puncte, secţiunea se află pe feţele suprafeţei piramidale, dar în afara muchiilor vizibile ale piramidei , aşa ca în figura 5.17, în care punctele care determină planul de secţiune au aceleaşi

157

Page 28: CAPITOLUL 5

Aplicaţii rezolvate

coordonate ca în figura 5.16, iar cele ale vârfurilor piramidei au coordonatele S(10, -150, -10), M(100, 90, -20), N(-60, 0, 80) şi P(0, 40, 0).

s m1 n1

s' m'1

n'1

m p'

n

p

p1

m'

Pz p'1

n'

Figura 5.16

Pz

Py

Px

s

s'

m

m' n

n'

p

p' m'1

n'1

p'1

m1 n1

p1

Figura 5.17

158

Page 29: CAPITOLUL 5

Elemente de grafică asistată

5.2.4 Alte probleme de intersecţie

ctiv cu ajutorul calculatorului şi al programului A

ctă

În acest subcapitol vor fi prezentate alte exemple în care

problemele de intersecţie pot fi rezolvate şi verificate mai uşor şi mai atra

159

o'

o

h'

h

Px

vo

Ao

Bo

Pv

Pvo

a

b

m

Mo

lo

ko

l

k

m'l'

k'

Ox

d = Ph = h

d'

h'v'

AutoC

metodă

P(PH, PV) ⊃ D(d, d’)

Figura 5.18

D. Dreapta şi sfera Fie construcţia din figura 5.18, în care este prezentată

dubla proiecţie ortogonală a punctelor de intersecţie a dreptei D(d, d’) cu suprafaţa sferei de centru O(o, o’). Cea mai dire

este alegerea unui plan auxiliar proiectant vertical, P(PH, PV) ⊥ [H],

Page 30: CAPITOLUL 5

Aplicaţii rezolvate

160

Acest plan, dacă secţionează sfera, o taie după un cerc, a cărui proiecţie, în plan vertical, este o elipsă. Determinarea ei este dificilă, de aceea se rabate planul P pe planul orizontal, astfel încât se pun în evidenţă atât cercul de secţiune cât şi intersecţiile acestui cerc cu dreapta D, conţinută în planul rabătut P.

În ridicarea rabaterii planului P, punctelor l0 şi k0 le corespund respectiv punctele L(l, l’) şi K(k, k’), ale căror proiecţii descriu grafic coordonatele carteziene ale intersecţiilor dreptei cu sfera.

Toată această construcţie grafică, prezentată în figura 5.18, poate fi obţinută automat cu unul din programele AutoCAD, prin încărcarea unei aplicaţii specifice scrisă în limbaj AutoLISP, pe care am numit-o “sfera”, scrisă într-un editor de text oarecare şi încărcată prin funcţia “load applications…” din bara de meniu derulant “tools” a programului.

Aplicaţia “sfera” este alcătuită din trei blocuri distincte, care sunt, pe scurt, următoarele:

• intrducerea coordonatelor centrului sferei, a razei r a sferei, a coordonatelor punctelor ce determină dreapta D, toate acestea fiind cerute la linia de dialog a AutoCAD – lui şi introduse de la tastatură. De exemplu,

(SETQ o (GETPOINT "Coordonatele centrului sferei o:")) (setq p (list (- 210 (car o)) (- 150 (cadr o)))) (setq q (list (- 210 (car o)) (+ 150 (caddr o)))) (SETQ r (GETREAL "Valoarea razei sferei r:")) (SETQ A (GETPOINT "Coordonatele punctului A:")) (setq a1 (list (- 210 (car a)) (- 150 (cadr a)))) (setq a2 (list (- 210 (car a)) (+ 150 (caddr a)))) (SETQ B (GETPOINT "Coordonatele punctului B:")) (setq b1 (list (- 210 (car b)) (- 150 (cadr b)))) (setq b2 (list (- 210 (car b)) (+ 150 (caddr b)))) • atribuirea valorilor corespunzătoare variabilelor

care intervin în realizarea construcţiei grafice, unghiuri, distanţe, puncte de intersecţie etc., de exemplu:

Page 31: CAPITOLUL 5

Elemente de grafică asistată

161

(Setq r1 (distance i j) u1 (angle a1 b1) j1 (polar i (+ (/ pi 1) 0) r1) j2 (polar i (+ (/ pi 2) u1) r1) j3 (polar j2 u1 (car i)) t (polar p (+ (/ pi 2) u1) r) m1 (inters a2 b2 q j nil) o0 (inters p t j2 j3 nil) n (polar m1 (/ pi 2) (cadr m1)) m (inters n m1 a1 b1 nil) h1 (inters a2 b2 o1 o2 nil) h2 (polar h1 (/ pi 2) (car h1)) h (inters a1 b1 h1 h2 nil) m0 (polar m (+ (/ pi 2) u1) r1) w (inters a1 b1 p o0 nil) r2 (distance p w) r0 (sqrt (- (expt r 2) (expt r2 2))) • în sfârşit, comenzile AutoCAD necesare

reprezentării propriu-zise. De exemplu, (Command "circle" p r ) (Command "circle" q r ) (Command "pline" p "w" "0" "0" q "") (Command "point" a1 "text" (list (+ (car a1) 8) (+ (cadr a1) 6)) 12

0 "a") (Command "point" a2 "text" (list (+ (car a2) 8) (+ (cadr a2) 6)) 12

0 "a'") (command "pline" a1 "w" "0" "0" a2 "") (Command "point" b1 "text" (list (+ (car b1) 8) (+ (cadr b1) 6)) 12

0 "b") (Command "point" b2 "text" (list (+ (car b2) 8) (+ (cadr b2) 6)) 12

0 "b'") (command "pline" b1 "w" "0" "0" b2 "") În figura 5.19 este prezentat desenul obţinut cu ajutorul

aplicaţiei “sfera” pentru următoarele valori ale variabilelor: O(11, 44, 57), r = 80, A(-75, 90, 111) şi B(105, 35, 12).

Programul returnează (la prompterul AutoCAD) coordonatele punctelor l, l’, k, k’, care sunt coordonatele punctelor de intersecţie ale dreptei D cu sfera. Coordonatele punctului L, pentru situaţia prezentată în figura 5.18, sunt:

Page 32: CAPITOLUL 5

Aplicaţii rezolvate

xr = 257,789 yr = 68,314 zr = 246,034

respectiv coordonatele punctului K: xr = 126,298 yr = 108,493 zr = 173,713

Figura 5.19

Ţinând seama de faptul că originea sistemului de axe

folosit pentru reprezentarea dublei proiecţii ortogonale a fost aleasă în punctul raportat la UCS prin O(210, 150), pentru a afla valorile reale ale coordonatelor punctelor L şi K, trebuie să se facă următoarea translaţie, în care x, y şi z sunt coordonatele reale şi xr, yr şi zr sunt valorile returnate de aplicaţia “sfera”. Bineînţeles, aplicaţia poate fi concepută în aşa fel încât programul să returneze direct valorile reale ale coordonatelor punctelor de intersecţie a dreptei cu sfera.

162

Page 33: CAPITOLUL 5

Elemente de grafică asistată

Astfel, pentru L se calculează: x = 210 - 257,789 = - 47,789 y = 150 - 68,314 = 81,686 z = 246,034 - 150 = 96,034 Pentru punctul K: x = 210 - 126,298 = 83,702 y = 150 - 108,493 = 41,507 z = 173,713 - 150 = 23,713 Pe de altă parte, aceste valori pot fi obţinute analitic

rezolvând sistemul:

( ) ( ) ( )

⎪⎩

⎪⎨

−−

=−−

=−−

=−−+−+−

ab

a

ab

a

ab

a

220

20

20

zzzz

yyyy

xxxx

0Rzzyyxx

care, particularizând pentru situaţia prezentată în figura 5.18, devine

( ) ( ) ( )

⎪⎩

⎪⎨

−−

=−−

=++

=−−+−+−

11112111z

903590y

7510575x

08057z44y11x 2222

Se observă cu uşurinţă că valorile determinate “grafic” verifică sistemul de mai sus.

Dreapta şi conul Aşa cum s-a arătat deja în introducerea acestui

subcapitol, proprietatea programului de a returna valorile coordonatelor oricărui punct, introdus ca entitate geometrică, poate fi folosită pentru a afla coordonatele unor puncte de intersecţie folosind metode grafice. Fie conul circular, cu vârful S şi baza în planul orizontal de proiecţie, din figura 5.20.

Cea mai simplă metodă grafică de determinare în dublă proiecţie ortogonală a punctelor de interesecţie dintre dreaptă şi suprafaţa conică constă în alegerea dreptei D1(d1, d1’), paralelă cu D(d, d’) şi care trece prin vârful conului S(s, s’).

163

Page 34: CAPITOLUL 5

Aplicaţii rezolvate

D(d, d’) // D1(d1, d1’) D1(d1, d1’) ⊂ S(s, s’)

s'

s

d

d' d1'

d1h1

h

h' h1'

12

1' 2'

mn

m'

n'

Figura 5.20 Urmele orizontale h şi h1 ale acestor drepte determină

urma orizontală a unui plan care taie suprafaţa conică după generatoarele S1 (s1, s’1’) şi S2 (s2, s’2’). Evident, aceste generatoare, coplanare cu dreapta D (d, d’), conţin punctele de intersecţie ale dreptei D cu suprafaţa conică.

D (d, d’) ∩ S1 (s1, s’1’) = M(m, m’) D (d, d’) ∩ S2 (s2, s’2’) = N(n, n’) Această construcţie poate fi automatizată prin

intermediul unei aplicaţii specifice, scrisă în AutoLISP, pe care am denumit-o “con”, al cărei bloc de selecţie este:

(Setq h11 (inters a2 b2 o1 o2 nil) r1 (distance a1 b1) j1 (polar h11 (/ pi 2) r1) h1 (inters h11 j1 a1 b1 nil) u1 (angle a2 b2) j2 (polar s2 u1 r1) h21 (inters s2 j2 o1 o2 nil)u2 (angle a1 b1)j3 (polar s1 u2 r1)j4 (polar h21 (/ pi 2) r1)

164

Page 35: CAPITOLUL 5

Elemente de grafică asistată

h2 (inters h21 j4 s1 j3 nil)u (angle h1 h2) w (polar p (+ (/ pi 2) u) r1)w1 (inters p w h1 h2 nil) r2 (distance p w1)d1 (sqrt (- (expt r 2) (expt r2 2))) l0 (polar w1 u d1)u3 (angle h2 h1) k0 (polar w1 u3 d1)k (inters k0 s1 a1 b1 nil) Intersecţia plăcilor plane

O problemă teoretică des intalnita în aplicaţiile de geometrie descriptivă, menită sa fixeze cunoştinţele legate de punct, dreaptă şi plan, în dublă proiecţie ortogonală, este cea a determinării intersecţiei unor plăci triunghiulare şi a vizibilităţii acestei intersecţii. Fie, de exemplu, urmatoarea problemă de intersecţie:

Figura 5.21

165

Să se gasească intersecţia dintre placa Δ ABC şi Δ MNP, fără a determina urmele planului, dacă vârfurile acestor

Page 36: CAPITOLUL 5

Aplicaţii rezolvate

plăci au coordonatele A(100, 60, 35), B(5, 80, 10), C(40, 10, 85), M(90, 20, 15), N(70, 75, 75) si P(20, 30, 35). In figura 5.21 este redată determinarea intersecţiei cu ajutorul planelor auxiliare proiectante. Pe scurt,

(NP) ∈ [Q]; [Q] fiind un plan auxiliar de capăt. [Q] ∩ [ABC] ⇒ (12) ∩ (NP) ⇒ S (MP) ∈ [R]; [R] fiind un alt plan auxiliar de capăt

[R] ∩ [ABC] ⇒ (34) ∩ (MP) ⇒ T . Deci Δ ABC ∩ Δ MNP ⇒ (ST). Rezolvarea aceste probleme poate fi, mai intuitiv şi

mai sugestiv, tratată cu ajutorul modelării 3D, folosind operaţiile „extrude” ale conceptului AutoCAD „solid”, apoi, pentru obţinerea unei imagini cât mai reale, operaţiile de randare, umbrire etc. Pentru prima placa ABC se reprezintă conturul ei, apoi se extrudează pe o înălţime relativ mică, în acest caz de o unitate, astfel încât se obţine modelul solid al plăcii raportat la „user coordinates sistem”. Analog pentru cea de-a doua placă MNP, apoi se foloseşte opţiunea „interference”, care realizează intersecţia plăcilor, stabilind şi vizibilitatea

Figura 5.22

166

In figura 5.22 sunt redate alaturat doua reprezentari ale aceleiasi intersectii, corespunzatoare punctului „vpoint” (-1, -1, 1). In partea stanga este redat un model „wireframe” al

Page 37: CAPITOLUL 5

Elemente de grafică asistată

intersectiei placilor, fara vizibilitate si fara ascunderea muchiilor, iar in partea dreapta, aceeasi intersectie, dar intr-o forma realistica, cu materiale, umbre si lumini, cu ajutorul „viewports”.

Un alt exemplu este cel redat in figura 5.23, in care varfurile celor doua placi ABC si MNP au coordonatele A(120,40,10), B(70, 10, 70), C(10, 60, 20), M(110, 50, 30), N(80, 80, 70) si P(20, 0, 0). [6]

Figura 5.23

Acest mod de abordare al problemei intersecţiei de

plăci este pentru studenţi sugestiv şi captivant şi totodată îi familiarizează cu modelarea 3D. Punctul din care este privită construcţia corespunde centrului de proiecţie din sistemul central (conic) al teoriei clasice a sistemelor de proiecţie.

Intersectii de poliedre Fie urmatoarea problemă clasică de intersecţii de

poliedre: Să se reprezinte în epură prismele date prin coordonatele vârfurilor lor: prisma ABCA1B1C1 , A(109, 44, 0), B(201, 105, 0), C(241, 15.5, 0), A1(223, 64, 115), şi

167

Page 38: CAPITOLUL 5

Aplicaţii rezolvate

NPRTN1P1R1T1, N(365, 60, 0), P(325, 97, 0), R(230, 80, 0), T(286, 12, 0) şi T1 (82, 5, 115) [6].

Pentru a obţine o reprezentare în epură a poligonului de intersecţie, care este un poligon în spaţiu, se determină vârfurile acestuia, care sunt punctele în care fiecare muchie a unei prisme inţeapa feţele celeilalte, cu metoda planelor auxiliare proiectante. Este o operaţie anevoioasă, care îi irită deopotrivă pe studenţi cât şi pe profesorii lor. Folosind posibilitaţile modelării solide, reprezentarea devine mai accesibilă, mai sugestivă şi, asa cum se intamplă de multe ori în învaţarea şi înţelegerea unor chestiuni abstracte şi pentru dezvoltarea capacitaţii de abstractizare, calea cea mai plăcută este totodată şi cea mai eficientă.

Figura 5.24

În figura 5.24 este redată imaginea intersecţiei celor

doua prisme, obtinută prin modelare solidă 3D. Poligoanele dela baza prismelor au fost introduse prin coordonatele vârfurilor date numeric, apoi au fost definite corpurile solide prin extrudare, de-a lungul unei căi de extrudare (path) în lungul unei muchii a prismei, de exemplu AA1 sau TT1. În partea stangă a reprezentării (viewport stânga) sunt vizibile modelele wireframe ale celor doua corpuri solide. În partea dreaptă sunt redate imaginile realistice ale celor două prisme,

168

Page 39: CAPITOLUL 5

Elemente de grafică asistată

din materiale diferite, pentru un mai mare contrast, şi intersecţia lor cu vizibilitatea acestei intersecţii.

În cazul modelării solide a unei piramide, calea cea mai directă este de a secţiona prisma căreia îi aparţine piramida prin planul determinat de trei puncte convenabil alese, cu ajutorul funcţiei “slice”. Fie, de exemplu, următoarea problemă de intersecţie: Să se reprezinte în epură poliedrele date prin coordonatele vârfurilor lor, prisma ABCA1B1C1, A(109, 40, 0), B(190, 105, 0), C(241, 15, 0), A1(227, 64, 115) şi piramida SNPRT, S(34, 5, 129), N(365, 60, 0), P(325, 117, 0), R(230, 103, 0) şi T(286, 12, 0).

Figura 5.25

În figura 5.25 este redatată imaginea intersecţiei (interference) celor două corpuri modelate ca solide 3D. Se observă că intersecţia este “o străpungere”. Pentru ca acest lucru să fie şi mai vizibil, se pot folosi alte centre de proiecţie (vpoint) sau chiar o imagine 3D dinamică, obţinută prin modificarea continuă a centrului de proiecţie, cu ajutorul opţiunii 3D continous orbit. În figura 5.26 este redată imaginea realistică a intersecţiei, cu materiale diferite ale celor două corpuri, cu umbre şi lumini produse de o sursă luminoasă punctiformă,

169

Page 40: CAPITOLUL 5

Aplicaţii rezolvate

care luminează construcţia dintr-un punc predefinit. Prisma a fost modelată prin extrudare, de-a lungul unei căi definite de una dintre muchiile ei, iar piramida prin secţionarea cu ajutorul funcţiei slice, bineinţeles, în ambele cazuri alegând un sistem de referinţă adecvat (user coordinates system).

Figura 5.26 Imaginea astfel obtinută a intersecţiei (o “străpungere)

este mai intuitivă, atractivă şi mai frumoasă. Un alt exemplu (o rupere), în care o problemă clasică de intersecţie de poliedre este tratată cu mijloacele modelarii solide este redat în figura 5.27.

Figura 5.27 Determinarea proiecţiei laterale Un anumit gen de exerciţiu care, după introducerea sistemelor de proiecţie şi a regulilor de reprezentare a poliedrelor, se foloseşte pentru deprinderea studenţilor cu aşezarea normală a proiecţiilor şi, în general, pentru

170

Page 41: CAPITOLUL 5

Elemente de grafică asistată

171

dezvoltarea capacitaţii lor de abstractizare în probleme de desen tehnic, este cel în care se dau două proiecţii ale unui poliedru (combinaţie de poliedre, corpuri cilindro-conice etc.), de exemplu, cea verticală şi orizontală (figura 5.28), şi se cere determinarea celei de-a treia proiecţie (laterală).

z

y

o x

Lucrul se poate desfasura in paralel cu realizarea unui model avansat 3D. Acest tip de reprezentări, asemănătoare celor axonometrice, este din ce în ce mai răspândit, fiind accesibil şi sugestiv. În principiu, un desen 3D este un model virtual al unui obiect, realizat într-un program de tip CAD şi căruia, mai mult decât în reprezentările axonometrice, îi pot fi ataşate anumite proprietăţi.

Figura 5.28 Programul ofera posibilitatea de schimbare a punctului imaginar din care este privit un obiect si acesta este principalul avantaj al reprezentărilor 3D faţă de cele axonometrice, în cazul cărora, odată planul axonometric ales, nu mai poate fi schimbat.

Figura 5.29 Opţiunea VPOINT este echivalentă cu păstrarea obiectului în poziţia iniţială şi deplasarea (virtuală) a

Page 42: CAPITOLUL 5

Aplicaţii rezolvate

observatorului în oricare punct din spaţiu, din care sunt vizibile detaliile interesante (figura 5.29).

După ce modelul de sârmă a fost construit, lui i se pot adăuga suprafeţele care-l mărginesc şi astfel se poate transforma în unul superficial. Extremităţile muchiilor modelului de sârmă (ale liniilor extrudate) pot servi drept cadru pentru amplasarea feţelor 3D (figura 5.30).

Figura 5.30 În figura 5.31 este redată imaginea 3D a altui poliedru,

obţinută de data asta cu ajutorul programului SolidWorks, un program, aşa cum s-a arătat deja, specializat în modelări 3D. O facilitate interesantă şi spectaculoasă a acestuia este posibilitatea trecerii rapide dela imaginea 3D la una în dublă sau multiplă proiecţie ortogonală. Deşi rezultatele şi imaginile obiectului modelat sunt asemănătoare, în cazul lucrului cu SolidWorks totul este mult mai rapid. De exemplu, numai extrudarea solidă aici se face pe două direcţii convenabil alese, aşa încât o dreaptă poate fi dezvoltată într-un obiect solid. În figura 5.31 a fost ales un corp combinaţie de prisme drepte, cu

172

Page 43: CAPITOLUL 5

Elemente de grafică asistată

multiple degajări şi alezaje, tocmai pentru a arătat cât de uşor se pot obţine toate aceste detalii.

Figura 5.31 Ca şi programul AutoCAD, SolidWorks lucrează cu

mai multe vederi simultan, având şi posibilitatea unei vizionări animate. Totodată, trecerea dela un model 3D la proiecţiile ortogonale ale acelui model se face cu mare uşurinţă, acesta din

173

Page 44: CAPITOLUL 5

Aplicaţii rezolvate

174

urmă având toate facilităţile de cotare cunoscute. În figura 5.32 sunt arătate proiecţiile ortogonale ale solidului din figura 5.31, aşezate după cunscuta metodă a cubului de proiecţie.

Figura 5.32