OPIS GEOMETRII W JĘZYKA ARLANG Z ZASTOSOWANIEM TECHNIKI CSG =========================================================== Opis bryły 3-wymiarowej realizowany jest poprzez składanie (dodawanie i odejmowanie) brył prostych, z wykorzystaniem koncepcji ruchomego roboczego układu współrzędnych. Każda bryła opisywana jest w pewnym układzie współrzędnych odniesienia, który tu będziemy nazywać lokalnym układem współrzędnych tej bryły. Bryła ta jest zawsze nieruchoma w stosunku do swojego lokalnego układu współrzędnych (innymi słowy, jeśli bryła znalazłaby się w ruchu, to jej lokalny układ współrzędnych przemieszczałby się wraz z nią). W momencie rozpoczęcia opisywania bryły zakłada się, że przestrzeń jest pusta, zaś Wspomniany powyżej roboczy układ współrzędnych pokrywa się z lokalnym układem współrzędnych opisywanej bryły. Roboczy układ współrzędnych można przemieszczać do założonych pozycji, definiując odpowiednie sekwencje translacji i rotacji - zaś w tych pozycjach można dodawać i odejmować uprzednio zdefiniowane bryły proste. Położenie dodawanych bądź odejmowanych brył prostych jest określone w ten sposób, że ich lokalny układ współrzędnych pokrywa się z roboczym układem współrzędnych w jego aktualnym położeniu. Wszystkie układy współrzędnych są układami prawoskrętnymi! W języku ARLANG zdefiniowane są następujące bryły podstawowe: 1) Prostopadłościan - wnętrze prostopadłościanu o podstawie leżącej na płaszczyźnie XY lokalnego układu współrzędnych, przy czym środek ciężkości tej podstawy pokrywa się z początkiem tego układu współrzędnych. 2) Wałek - wnętrze wałka o zadanym promieniu r i wysokości h, o podstawie leżącej na płaszczyźnie XY lokalnego układu współrzędnych, przy czym środek ciężkości tej podstawy pokrywa się z początkiem tego układu współrzędnych. 3) Stożek - wnętrze skończonego stożka o promieniu podstawy dolnej r1, promieniu podstawy górnej r2, oraz o wysokości h, przy czym podstawa dolna leży w płaszczyźnie XY lokalnego układu współrzędnych, zaś jej środek ciężkości pokrywa się z początkiem tego układu współrzędnych. 4) Kula - wnętrze kuli o zadanym promieniu i środku pokrywającym się z początkiem lokalnego układu współrzędnych. W miarę potrzeb można też wykorzystywać następujące bryły elementarne: 1) Półprzestrzeń dolna - jest to nieskończona bryła elementarna, ograniczona "od góry" płaszczyzną XY jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnej z<=0 w lokalnym układzie współrzędnych 2) Półprzestrzeń górna - jest to nieskończona bryła elementarna, ograniczona "od dołu" płaszczyzną XY jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnej z>=0 w lokalnym układzie współrzędnych 3) Wnętrze walca - jest to część przestrzeni zamknięta wewnątrz nieskończonej powierzchni walcowej o osi pokrywającej się z osią Z jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnych x i y (mierzonych w lokalnym układzie współrzędnych tej bryły) spełniających warunek x*x+y*y<=r*r gdzie r - promień tej powierzchni walcowej 4) Zewnętrze walca - jest to część przestrzeni znajdująca się na zewewnątrz nieskończonej powierzchni walcowej o osi pokrywającej się z osią Z jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnych x i y (mierzonych w lokalnym układzie współrzędnych tej bryły) spełniających warunek x*x+y*y>=r*r gdzie r - promień tej powierzchni walcowej 5) Wnętrze kuli - jest to część przestrzeni zamknięta wewnątrz powłoki kulistej o środku pokrywającym się z punktem początku jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnych x,y,z (mierzonych w lokalnym układzie współrzędnych tej bryły) spełniających warunek x*x+y*y+z*z<=r*r gdzie r - promień tej powłoki kulistej 6) Zewnętrze kuli - jest to część przestrzeni znajdująca się na zewnątrz powłoki kulistej o środku pokrywającym się z punktem początku jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnych x,y,z (mierzonych w lokalnym układzie współrzędnych tej bryły)spełniających warunek x*x+y*y+z*z>=r*r gdzie r - promień tej powłoki kulistej 7) Wnętrze stożka - jest to część przestrzeni zamknięta wewnątrz nieskończonej powierzchni stożkowej (ciągnącej się w obie strony od wierzchołka) o osi pokrywającej się z osią Z jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnych x,y,z (mierzonych w lokalnym układzie współrzędnych tej bryły) spełniających warunek x*x+y*y<=r*r, przy czym r wyraża się wzorem r=z*tg(alfa) gdzie alfa jest wartością półkąta wierzchołkowego stożka 8) Zewnętrze stożka - jest to część przestrzeni znajdująca się na zewnątrz nieskończonej powierzchni stożkowej (ciągnącej się w obie strony od wierzchołka) o osi pokrywającej się z osią Z jej lokalnego układu współrzędnych. Innymi słowy, jest to zbiór punktów przestrzeni o współrzędnych x,y,z (mierzonych w lokalnym układzie współrzędnych tej bryły) spełniających warunek x*x+y*y>=r*r, przy czym r wyraża się wzorem r=z*tg(alfa) gdzie alfa jest wartością półkąta wierzchołkowego stożka Opis geometrii składa się z ciągu wywołań procedur definiujących translacje i rotacje roboczego układu współrzędnych oraz wywołań procedur określających dodawane bądź odejmowane w danym miejscu bryły proste. Parametrami procedur definiujących translacje i rotacje są wyrażenia arytmetyczne określające wartość tych przemieszczeń (w jednostkach długości np. w milimetrach dla translacji i w radianach bądź w stopniach dla rotacji). Kąty dodatnie odpowiadają obrotom w prawo (patrząc w kierunku zgodnym z osią), zaś kąty ujemne - obrotom w lewo. Parametrami procedur definiujących dodawane bądź odejmowane bryły są konkretne wartości liczbowe bądź wyrażenia arytmetyczne określające wymiary tych brył. Poniżej znajduje się wykaz procedur wraz z ich objaśnieniami: Procedura Opis Przykłady --------- ---- --------- TX(dx) Translacja (przesunięcie) roboczego układu współ- TX(100) rzędnych wzdłuż jego własnej osi X o wartość dx TY(dy) Translacja (przesunięcie) roboczego układu współ- TY(d*2) rzędnych wzdłuż jego własnej osi Y o wartość dy TZ(dz) Translacja (przesunięcie) roboczego układu współ- TZ(-s/2) rzędnych wzdłuż jego własnej osi Z o wartość dz RX(alfa) Rotacja (obrót) roboczego układu współrzędnych RX(-90°) wokół jego własnej osi X o kąt alfa podany w radianach (lub w stopniach, jeśli po wartości liczbowej podamy symbol °, który można wpisać za pomocą kombinacji klawiszy ALT + 248) RY(beta) Rotacja (obrót) roboczego układu współrzędnych RY(a) wokół jego własnej osi Y o kąt beta podany w radianach (lub w stopniach, jeśli po wartości liczbowej podamy symbol °, który można wpisać za pomocą kombinacji klawiszy ALT + 248) RZ(gamma) Rotacja (obrót) roboczego układu współrzędnych RZ(45°) wokół jego własnej osi Z o kąt gamma podany w radianach (lub w stopniach, jeśli po wartości liczbowej podamy symbol °, który można wpisać za pomocą kombinacji klawiszy ALT + 248) STPOS(nr) Zapamiętanie aktualnego położenia roboczego układu STPOS(3) współrzędnych (STore Position) i przypisanie mu numeru nr. Zapamiętać można conajwyżej 255 położeń o numerach od 1 do 255. Powtórne wywołanie procedury STPOS z takim samym parametrem spowoduje skasowanie uprzednio zapamiętanego położenia REPOS(nr) Odtworzenie zapamiętanego uprzednio pod numerem nr REPOS(3) połozenia (REstore POsition) roboczego układu współrzędnych Podstawowe bryły złożone: +CUBOID(dx,dy,dz) Dodanie wnętrza prostopadlościanu o wymiarach +CUBOID(a,b,c) dx, dy, dz odpowiednio w kierunku osi X, Y, Z -CUBOID(dx,dy,dz) Odjęcie wnętrza prostopadlościanu o wymiarach -CUBOID(a,b,c) dx, dy, dz odpowiednio w kierunku osi X, Y, Z +CYLINDER(r,h) Dodanie wnętrza wałka cylindrycznego o promieniu r +CYLINDER(10,100) i wysokości h -CYLINDER(r,h) Odjęcie wnętrza wałka cylindrycznego o promieniu r -CYLINDER(10,100) i wysokości h +CONE(r1,r2,h) Dodanie wnętrza stożka o promieniu podstawy dolnej +CONE(20,10,80) r1, promieniu podstawy górnej r2 oraz wysokości stożka h -CONE(r1,r2,h) Odjęcie wnętrza stożka o promieniu podstawy dolnej -CONE(20,10,80) r1, promieniu podstawy górnej r2 oraz wysokości stożka +SPHERE(r) Dodanie wnętrza kuli o promieniu r (procedura ta +SPHERE(100) jest równoważna z procedurą +WK(r) -SPHERE(r) Odjęcie wnętrza kuli o promieniu r (procedura ta +SPHERE(100) jest równoważna z procedurą -WK(r) Bryły elementarne: +LHSP Dodanie półprzestrzeni dolnej (Lower Half-SPace) +LHSP w aktualnym położeniu roboczego układu współrzędnych +UHSP Dodanie półprzestrzeni górnej (Upper Half-SPace) +UHSP w aktualnym położeniu roboczego układu współrzędnych -LHSP Odjęcie półprzestrzeni dolnej (Lower Half-SPace) -LHSP w aktualnym położeniu roboczego układu współrzędnych -UHSP Odjęcie półprzestrzeni górnej (Upper Half-SPace) -UHSP w aktualnym położeniu roboczego układu współrzędnych +ICYL(r) Dodanie wnętrza nieskończonego walca (Inside of +icyl(10) CYLinder) o podanym promieniu r, w aktualnym poło- żeniu roboczego układu współrzędnych -ICYL(r) Odjęcie wnętrza nieskończonego walca (Inside of -icyl(r/2) CYLinder) o podanym promieniu r, w aktualnym poło- żeniu roboczego układu współrzędnych +OCYL(r) Dodanie zewnętrza nieskończonego walca (Outside of +ocyl(10) CYLinder) o podanym promieniu r, w aktualnym poło- żeniu roboczego układu współrzędnych -OCYL(r) Odjęcie zewnętrza nieskończonego walca (Outside of -ocyl(5) CYLinder) o podanym promieniu r, w aktualnym poło- żeniu roboczego układu współrzędnych +ISPH(r) Dodanie wnętrza kuli (Inside of SPHere) o podanym +isph(50) promieniu r, w aktualnym położeniu roboczego układu współrzędnych -ISPH(r) Odjęcie wnętrza kuli (Inside of SPHere) o podanym -isph(D/2) promieniu r, w aktualnym położeniu roboczego układu współrzędnych +OSPH(r) Dodanie zewnętrza kuli (Outside of SPHere) o poda- +osph(50) nym promieniu r, w aktualnym położeniu roboczego układu współrzędnych -OSPH(r) Odjęcie zewnętrza kuli (Outside of SPHere) o poda- -osph(D/2) nym promieniu r, w aktualnym położeniu roboczego układu współrzędnych +ICON(alfa) Dodanie wnętrza nieskończonego stożka (Inside of +icon(30°) CONe) o podanej wartości półkąta wierzchołkowego alfa, w aktualnym położeniu roboczego układu współ- rzędnych. Kąt alfa jest podawany w radianach (lub w stop- niach, gdy po wartości liczbowej podamy symbol °, który można wpisać za pomocą kombinacji klawiszy ALT + 248) -ICON(alfa) Odjęcie wnętrza nieskończonego stożka (Inside of -icon(a/2) CONe) o podanej wartości półkąta wierzchołkowego alfa, w aktualnym położeniu roboczego układu współ- rzędnych. Kąt alfa jest podawany w radianach (lub w stop- niach, gdy po wartości liczbowej podamy symbol °, który można wpisać za pomocą kombinacji klawiszy ALT + 248) +OCON(alfa) Dodanie zewnętrza nieskończonego stożka (Outside of +ocon(45°) CONe) o podanej wartości półkąta wierzchołkowego alfa, w aktualnym położeniu roboczego układu współ- rzędnych. Kąt alfa jest podawany w radianach (lub w stop- niach, gdy po wartości liczbowej podamy symbol °, który można wpisać za pomocą kombinacji klawiszy ALT + 248) -OCON(alfa) Odjęcie zewnętrza nieskończonego stożka (Outside of -ocon(arctan(0.8)) CONe) o podanej wartości półkąta wierzchołkowego alfa, w aktualnym położeniu roboczego układu współ- rzędnych. Kąt alfa jest podawany w radianach (lub w stop- niach, gdy po wartości liczbowej podamy symbol °, który można wpisać za pomocą kombinacji klawiszy ALT + 248) Oprócz wykorzystywania powyższych procedur opisujących dodawane bądź odejmowane bryły elementarne i podstawowe bryły złożone, istnieje również możliwość dodawania i odejmowania zdefiniowanych uprzednio własnych brył złożonych, opisanych w osobnych procedurach niebibliotecznych (czyli własnych procedurach napisanych przez użytkownika). W takim przypadku taka bryła składowa jest dodawana bądź odejmowania w takim położeniu, że jej lokalny układ współrzędnych pokrywa się z roboczym układem współrzędnych w jego aktualnym położeniu. Zapis formalny dodania lub odjęcia takiej bryły ma następującą postać: + Nazwa_procedury np.: +Nakretka - Nazwa_procedury np.: -Rowek teowy bądź też: + Nazwa_procedury (zestaw parametrów) np.: +szescian(30) - Nazwa_procedury (zestaw parametrów) np.: -waleczek(D,L) gdzie "Nazwa_procedury" jest nazwą procedury niebibliotecznej, w której dodawana bądź odejmowana bryła składowa została opisana. Opis bryły składowej zawarty we wspomnianej procedurze niebibliotecznej jest również ciągiem wywołań procedur określających translacje roboczego układu współrzędnych (przy czym jest to zupełnie niezależny roboczy układ współrzędnych, niemający nic wspólnego z roboczym układem współrzędnych używanym w opisie zawierającym wywołanie tej procedury niebibliotecznej) oraz wywołań procedur definiujących dodawane bądź odejmowane bryły proste (choć i tam mogą się znaleźć odwołania do brył składowych niższego stopnia, opisanych w jeszcze innych procedurach niebibliotecznych). Poniżej przedstawiono przykładowy opis wałka stopniowanego mającego następujące trzy stopnie: - pierwszy o średnicy 30 i długości 50 - drugi o średnicy 60 i długości 80 - trzeci o średnicy 30 i długości 40 +cylinder(15,170) tz(50) +cylinder(30,80) Taki sam wałek można też opisać, wykorzystując własną procedurę "stopien": procedure stopien parameters D,L +icyl(D/2) -lspc tz(L) -uspc endproc Kod wykorzystujący tę procedurę ma następującą postać: +stopien(30,170) tz(50) +stopien(60,80)