Geometrické praktikum



Podobné dokumenty
Geometrické praktikum

HVrchlík DVrchlík. Anuloid Hrana 3D síť

BARVY. Příkaz barva. Barvy TrueColor. Se objeví dialogové okno

4 Přesné modelování. Modelování pomocí souřadnic. Jednotky a tolerance nastavte před začátkem modelování.

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha

Odvození středové rovnice kružnice se středem S [m; n] a o poloměru r. Bod X ležící na kružnici má souřadnice [x; y].

Souřadný systém. Obr.: Druhý objekt v otočeném souřadném systému

Popis základního prostředí programu AutoCAD

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1]

SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM

Gymnázium Jiřího Ortena, Kutná Hora. Průřezová témata Poznámky. Téma Školní výstupy Učivo (pojmy) volné rovnoběžné promítání průmětna

Programování v jazyku LOGO - úvod

Vzorce počítačové grafiky

Geometrické transformace pomocí matic

2D-skicování Tato část poskytuje shrnutí 2D-skicování, které je nezbytné ke tvorbě modelů Solid Works.

VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C)

GEOM LITE - MANUÁL hlavní obrazovka

Stručný návod na program COMSOL, řešení příkladu 6 z Tepelných procesů.

1 Připomenutí vybraných pojmů

1.1 Napište středovou rovnici kružnice, která má střed v počátku soustavy souřadnic a prochází bodem

9 Prostorová grafika a modelování těles

Úterý 8. ledna. Cabri program na rýsování. Základní rozmístění sad nástrojů na panelu nástrojů

9. Práce s naskenovanými mapami

1. Dva dlouhé přímé rovnoběžné vodiče vzdálené od sebe 0,75 cm leží kolmo k rovine obrázku 1. Vodičem 1 protéká proud o velikosti 6,5A směrem od nás.

Úvod Typy promítání Matematický popis promítání Implementace promítání Literatura. Promítání. Pavel Strachota. FJFI ČVUT v Praze

9.1 Definice a rovnice kuželoseček

Kapitola 5. Seznámíme se ze základními vlastnostmi elipsy, hyperboly a paraboly, které

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 4.ročník SOUŘADNICOVÉ SOUSTAVY VE FOTOGRAMMETRII

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

Návod k použití softwaru Solar Viewer 3D

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 31 - KÓTOVÁNÍ]

Transformace (v OpenGL) příklady a knihovna GLM

KMA/GPM Barycentrické souřadnice a

Gymnázium Jiřího Ortena, Kutná Hora. volné rovnoběžné promítání průmětna

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

BRICSCAD V13 X-Modelování

ZŠ ÚnO, Bratří Čapků 1332

Několik námětů k zamyšlení pro praktické měření na souřadnicových měřicích strojích. Daniel Zachoval & Luboš Zachoval

Funkce a základní pojmy popisující jejich chování

Programátorská dokumentace

INFORMATIKA PRO ZŠ. Ing. Veronika Šolcová

MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT)

Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA

Euklidovský prostor Stručnější verze

Elementární křivky a plochy

Výpočet průsečíků paprsku se scénou

Eukleidovský prostor a KSS Eukleidovský prostor je bodový prostor, ve kterém je definována vzdálenost dvou bodů (metrika)

Technické kreslení v programu progecad 2009

Comenius Logo. Princip programování. Prostředí Comenius Logo

PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII

Definice: Kružnice je množina bodů v rovině, které mají od daného bodu (střed S) stejnou vzdálenost

Afinní transformace Stručnější verze

Bézierovy křivky Bohumír Bastl KMA/GPM Geometrické a počítačové modelování Bézierovy křivky GPM 1 / 26

Motivace - inovace - zkušenost a vzdělávání

Comenius Logo. Úterý 20. března. Princip programování. Prostředí Comenius Logo

Počítačová grafika. Studijní text. Karel Novotný

Výpočet průsečíků paprsku se scénou

MODAM Popis okna. 2 Jana Bělohlávková, Katedra matematiky a deskriptivní geometrie, VŠB - TU Ostrava

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

Aritmetické vektory. Martina Šimůnková. Katedra aplikované matematiky. 16. března 2008

Nástroje v InDesignu. Panel nástrojů 1. část. Nástroje otevřeme Okna Nástroje

Obsah. Základy práce s rastry. GIS1-5. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

Gymnázium Jiřího Ortena, Kutná Hora

7.5.3 Hledání kružnic II

BALISTICKÝ MĚŘICÍ SYSTÉM

ZŠ ÚnO, Bratří Čapků 1332

Manuál SW lokalizace problémů a hodnot v dynamické mapě

Matematika I 12a Euklidovská geometrie

IB112 Základy matematiky

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

BIOMECHANIKA KINEMATIKA

10. Analytická geometrie kuželoseček 1 bod

Rozvoj prostorové představivosti

11 Zobrazování objektů 3D grafiky

OBSAH. ÚVOD...5 O Advance CADu...5 Kde nalézt informace...5 Použitím Online nápovědy...5. INSTALACE...6 Systémové požadavky...6 Začátek instalace...

Práce s texty, Transformace rastru, Připojení GPS

Vlastní čísla a vlastní vektory

Podmíněné vykonávání

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

Hydroprojekt CZ a.s. WINPLAN systém programů pro projektování vodohospodářských liniových staveb. HYDRONet 3. Modul SITUACE

MATEMATIKA 5. TŘÍDA. C) Tabulky, grafy, diagramy 1 - Tabulky, doplnění řady čísel podle závislosti 2 - Grafy, jízní řády 3 - Magické čtverce

Macromedia Flash 8. Druhy animace: Snímek po snímku. F5 vložit snímek (insert frame) F6 vložit klíčový snímek (insert key frame)

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

Fyzika 2 - rámcové příklady Magnetické pole - síla na vodič, moment na smyčku

Předmět: Informační a komunikační technologie

výsledek 2209 y (5) (x) y (4) (x) y (3) (x) 7y (x) 20y (x) 12y(x) (horní indexy značí derivaci) pro 1. y(x) = sin2x 2. y(x) = cos2x 3.

= cos sin = sin + cos = 1, = 6 = 9. 6 sin 9. = 1 cos 9. = 1 sin cos 9 = 1 0, ( 0, ) = 1 ( 0, ) + 6 0,

Urci parametricke vyjadreni primky zadane body A[2;1] B[3;3] Urci, zda bod P [-3;5] lezi na primce AB, kde A[1;1] B[5;-3]

Slouží pro výběr prvků, skupin a komponent pro další použití

Kristýna Bémová. 13. prosince 2007

SolidWorks. SW je parametrický 3D modelář a umožňuje. Postup práce v SW: Prostředí a ovládání

Jak ovládat ručičku tachometru (ukazatel)?

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY ZADÁNÍ NEOTVÍREJTE, POČKEJTE NA POKYN!

Transkript:

Geometrické praktikum Jan Laštovička 28. dubna 2015 1 Kreslení objektů v rovině Začneme malým příkladem. Nahrajte knihovnu lisp-gl načtením (například z nabídky File > Load...) souboru load.lisp a vyhodnot te následující kód: (opengl () (color (color-point :red)) (vertex (point 0 0)) (vertex (point 500 0)) (vertex (point 0 200)))) Otevře se nové okno s červeným trojúhelníkem. Výsledek je zachycen na obrázku 1. Postupně si rozebereme právě použitý kód. Začneme makrem opengl, které vykresluje obsah do nově vytvořeného OpenGL okna. Zjednodušená syntax makra je následující: (opengl () form ) Smyslem výrazů je kreslit obsah okna. Při potřebě překreslit okno jsou tyto výrazy postupně vyhodnocovány. Funkce color mění aktuální barvu. Do další změny jsou všechny objekty kresleny nastavenou barvou. Funkce jako svůj argument bere bod z jednotkové krychle určující barvu v RGB modelu. Funkce color-point vrací bod v krychli reprezentující barvu zadanou jejím názvem. Tedy (color (color-point :red)) nastaví aktuální barvu na červenou. Makro polygon kreslí konvexní polygon. Jeho argumenty jsou výrazy, které jsou postupně vyhodnocovány. Jejich významem je zadávání vrcholů polygonu. Funkce vertex bere dvourozměrný bod, který je poslán do grafické karty jako další vrchol polygonu. Funkce point vytvoří bod o zadaných souřadnicích. Před zadáním úkolů si představíme funkce pro práci s body a vektory. Ty budou užitečné pro řešení úkolů. Už jsme si představili funkci 1

Obrázek 1: Trojúhelník point na vytváření bodů. Podobně pracuje fuknce vect vytvářející vektory. Následující funkce pracují jak s vektory tak body. Funkce coordinates vrací souřadnice bodu nebo vektoru v seznamu. Funkce x, y a z zjišt ují první, druhou a třetí souřadnici. Dimenzi prostoru, ve kterém se bod nebo vektor nachází, zjistíme funkcí dimension. Násobení skaláru vektorem realizuje funkce mult, která bere koeficient násobení a vektor. Dva vektory sčítá funkce plus. K bodu vektor přičte funkce plus. Vektor vedoucí od jednoho bodu k druhému zjistí funkce minus. U vektoru, který je z prostoru dimenze dva, zjišt uje funkce phi jeho odchylku od kladné poloosy x. Funkce rotate otočí vektor dimenze dva o zadaný úhel. Úkol 1. Napište funkci regular-polygon, která bere střed (bod), poloměr a počet vrcholů. Funkce nakreslí pravidelný mnohoúhelník vepsaný do kružnice. Vrchol mnohoúhelníku směřuje nahoru. Úkol 2. Naprogramujte funkci circle, která bere střed (bod) a poloměr, kreslící kružnici. Úkol 3. Napište funkci star kreslící hvězdu. Funkce bere střed (bod), dva poloměry (r 1 a r 2 ) a počet cípů. Hvězdě je opsaná kružnice o poloměru r 1 a do hvězdy je vepsaná kružnice o poloměru r 2. Cíp hvězdy směřuje nahoru. 2

2 Konvexní polygony Makro opengl neumožňuje ukládání vlastností kreslení (např. barva objektu) a ani definici obsluh uživatelských akcí (např. kliknutí myši). Tuto funkcionalitu poskytuje obecnější makro opengl-canvas jehož zjednodušená syntax je následující: (opengl-canvas () ({var (var [init-form])} ) (function-name lambda-list form ) ) Druhý argument makra je definice proměnných kreslícího plátna, které se definují stejně jako u makra let. Za proměnnými následuje definice lokálních funkcí podobná jako u makra labels. Následuje výčet funkcí, které lze takto definovat. Funkce display nebere žádný argument a stará se o kreslení obsahu na plátno. Funkce mouse-press-primary bere bod. Je volána v případě, že došlo ke zmáčknutí hlavního (primárního) tlačítka myši. Do argumentu je dána pozice myši. Funkce mouse-press-secondary funguje stejně jako mouse-press-primary s tím rozdílem, že je volána v případě stisku sekundárního tlačítka. V těle funkcí je možno přistupovat k proměnným plátna (číst jejich hodnotu a nastavovat ji makrem setf). Po zpracování kliku myši je okno překresleno. Následující příklad zobrazí okno s trojúhelníkem jehož barva se mění po stisku tlačítka myši. (opengl-canvas () ((color :red)) (display () (color (color-point color)) (vertex (point 0 0)) (vertex (point 500 0)) (vertex (point 0 100)))) (mouse-press-primary (point) (if (eql color :red) (setf color :blue) (setf color :red)))) Před zadáním úkolů si představíme funkci cross-product, která vrátí vektorový součin dvou vektorů dimenze tři. Připomeňme, že výsledkem je vektor kolmý k oběma zadaným vektorům směřující do poloprostoru určeného pravidlem pravé ruky. S použitím představené funkce splňte následující úkoly. Úkol 1. Napište funkci, která rozhodne, zda je polygon zadaný jako seznam vrcholů (bodů) konvexní. 3

Úkol 2. Napište funkci rozhodující, zda je bod v konvexním polygonu. Úkol 3. Vytvořte okno s následujícím chováním. Po stisku hlavního tlačítka se přidá vrchol do konvexního polygonu. Po prvních dvou stiscích, kdy se zadávají první dva vrcholy polygonu, zůstane okno prázdné. Po třetím stisku se zobrazí trojúhelník. Další body budou přidávané mezi první a poslední vrchol polygonu, ale pouze v případě, že polygon zůstane konvexní. V opačném případě se zobrazí (pomocí funkce capi:display-message) chybová hláška. Pokud se do takto vznikajícího polygonu klikne sekundárním tlačítkem, dojde k změně jeho barvy. 3 Souřadný systém modelu Vrcholy polygonů jsou zadávané v souřadném systému modelu. Jeho výchozí nastavení je následující. Počátek se nalézá v levém dolním rohu. Osa x směřuje vpravo a osa y nahoru. Měřítko os je nastaveno tak, aby jednotka měla velikost jednoho pixelu. Následující tři funkce slouží k transformaci souřadného systému modelu. Funkce c-s-translate (c-s je zkratkou za coordinate system) bere vektor zadaný v souřadném systému modelu. Funkce posune počátek o vektor. Funkce c-s-scale bere dva koeficienty (čísla). Funkce změní měřítka os podle zadaných koeficientů (první koeficient je použit na osu x). Nakonec funkce c-s-rotate otočí osy o zadaný úhel proti směru hodinových ručiček. Před kreslením obsahu okna je souřadný systém vrácen do své výchozí polohy. Při kreslení je k dispozici zásobník, na který je možné ukládat souřadné systémy modelu makrem with-c-s-pushed. Makro bere výrazy. Nejdříve vloží souřadný systém modelu na zásobník, poté postupně provede výrazy a na závěr odebere souřadný systém ze zásobníku a učiní jej aktuálním. Před zadáním úkolu si představíme způsob zpracování stisku klávesy. K tomuto účelu slouží funkce key-press makra opengl-canvas očekávající znak. Po stisku klávesy je funkce zavolána a znak klávesy je jí předán jako argument. Objekt reprezentující znak c získáme vyhodnocením #\c. Úkol 1. Vytvořte okno s robotickou paží zachycené na následujícím obrázku. 4

Ke kreslení paže můžete použít pouze čtverec o hraně délky jedna. Paže se bude natahovat a ohýbat stiskem tlačítek + a -. 4 Třetí dimenze Plátno pracující s trojrozměrným prostorem se vytvoří makrem opengl-canvas nastavením proměnné dimension na 3. Souřadný systém prostoru navíc obsahuje osu z, která je ve výchozí pozici kolmá na osy x a y a směřuje směrem k uživateli. Funkce pracující s trojrozměrným prostorem očekávají jako argumenty trojrozměrné body a vektory. Například funkce vertex očekává trojrozměrný bod. Následující kód nakreslí dva do sebe zakleslé trojúhelníky. (opengl-canvas () ((dimension 3)) (display () (color (color-point :red)) (vertex (point 0 0 100)) (vertex (point 500 0 100)) (vertex (point 0 100 100))) (color (color-point :blue)) (vertex (point 0 0 0)) (vertex (point 200 0 200)) (vertex (point 200 100 200))))) V trojrozměrném prostoru mají rotující funkce (rotate a c-s-rotate) nepovinný argument rotation-vector, což je trojrozměrný vektor, kolem kterého 5

se bude točit. Například příkaz (c-s-rotate pi (vect 1 0 0)) otočí soustavu kolem kladné části osy x o 180. Implicitně je tento argument vektor o souřadnicích (0, 0, 1). Rozšíříme si syntax makra opengl-canvas o možnost zadávat moduly: (opengl-canvas (modul ) variables functions ) Moduly lze zadávat také do makra opengl: (opengl (modul ) form ) Modul 3d nastaví dimenzi plátna na 3, posune počátek do středu okna a postupně rotuje kolem kladných částí os x, y a z o úhly, které je možné měnit stisky následujících kláves. Osu x rotují klávesy w a s, osu y klávesy a a d a osu z klávesy r a f. Následující kód nakreslí trojúhelník, se kterým je možné stisky kláves rotovat. (opengl (3d) (color (color-point :red)) (vertex (point 0 0 0)) (vertex (point 500 0 0)) (vertex (point 0 100 0)))) Rozšíříme si repertoár funkcí pracující s body a vektory. Funkce normalize vrátí vektor velikosti jedna stejného směru jako zadaný vektor. Funkce minus-origin bere bod a vrátí vektor vedoucí z počátku (bod o nulových souřadnicích) k zadanému bodu. Naopak funkce plus-origin vrátí k zadanému vektoru bod, který vznikne sečtením počátku a vektoru. Úkol 1. Nakreslete pravidelný osmistěn vepsaný do jednotkové koule se středem v počátku. Úkol 2. Nakreslete subdivizi trojúhelníku (bude vysvětleno na semináři) s vrcholy ležícími na jednotkové kouli se středem v počátku. Úkol 3. Pomocí subdivize osmistěnu nakreslete aproximaci jednotkové koule. 5 ModelView Matice Vrcholy polygonu můžou být transformovány následujícím způsobem. V makru opengl-canvas může být definována funkce vertex-transformation, která musí brát bod a vracet opět bod. Tato funkce bude volána na každý vrchol zadaný funkcí vertex. Vrchol polygonu bude mít souřadnice výsledného bodu. 6

Během vykonávání funkcí plátna (například při kreslení) je možné získat přístup k jeho proměnným následujícím makrem: (with-canvas-variables (variable ) form ) Ve výrazech makra je možné číst a nastavovat vyjmenované proměnné. Úkol 1. Vytvořte plátno pracující s dvourozměrným prostorem s Model- View maticí. Úkol 2. Napište následující funkce měnící ModelView matici. Funkce m-v-matrix-set-identity nastaví matici na jednotkovou. Funkce m-v-matrix-translate změní matici tak, aby se posunul počátek báze modelu o zadaný vektor. Funkce m-v-matrix-scale změní matici tak, aby se vynásobily vektory báze modelu zadanými koeficienty. 6 Návrat na začátek Úkol 1. Napište následující funkce pracující s vektorovým prostorem R 2 : vectors-plus (sčítající dva vektory) a scalar-vector-mult (násobící vektor skalárem). Úkol 2. Napište funkce point-vector-plus (sčítající bod a vektor) a points-minus (vracející rozdíl dvou bodů) pracující s afinním prostorem R 2 (se zaměřením R 2 ). Úkol 3. Vytvořte plátno pracující s afinním prostorem R 2, které bude mít afinní bázi. Afinní bázi reprezentujte tříprvkovým seznamem, kde první dva prvky budou vektory báze a třetí prvek bude její počátek. Zařid te, aby souřadnice vrcholů byly zadávané vzhledem k této bázi. Úkol 4. Napište funkce affine-base-set-canonical (nastaví aktuální afinní bázi na kanonickou), affine-base-translate (posune počátek afinní báze o vektor zadaný souřadnicemi ve vektorové bázi aktuální afinní báze), affine-base-scale (vynásobí vektory afinní báze zadanými koeficienty) a affine-base-rotate (orotuje vektory afinní báze proti směru hodinových ručiček o zadaný úhel). Úkol 5. Přidejte do plátna zásobník na ukládání afinních bází. Napište funkci affine-base-push, která vloží aktuální afinní bázi na zásobník, a funkci affine-base-pop, která odebere afinní bázi ze zásobníku a učiní ji aktuální. 7

7 Stíny Představíme si způsob, kterým lez vypočítávat barvy vrcholů polygonu. Funkce vertex-compute-color makra opengl-canvas bere bod a vrací barvu. Je volána na každý vrchol zadaný funkcí vertex. Vrácená barva se stane barvou vrcholu. Proměnná plátna current-color je navázána na aktuální barvu, kterou mění funkce color. Proměnnou je dovoleno pouze číst. Úkol 1. Vytvořte trojrozměrný objekt, který bude vrhat stín na vámi vybranou rovinu. Uživatel si může vybrat, jestli světlo s rovnoběžnými paprsky bude na scénu dopadat z vrchu nebo z jednoho konkrétního směru, který si vyberete vy, nebo z libovolného směru, který zadá on. 8 Svěla Vrcholu zadanému funkcí vertex je přiřazen aktuální normálový vektor kreslícího plátna. Ten lze měnit funkcí normal beroucí vektor. Zadaný normálový vektor je transformován funkcí plátna normal-transformation (bere vektor a vrací opět vektor). Aktuální normálový vektor je navázán na proměnnou plátna curent-normal. Funkce clear-color bere barvu (bod z jednotkové krychle) a nastaví aktuální mazací barvu. Funkce clear-canvas (nebere žádný argument) překryje plátno aktuální mazací barvou. Úkol 1. Vystínujte objekt tak, aby na něj dopadalo světlo ze zadaného směru. Úkol 2. Dodejte odlesky. 9 Bézierova křivka Dosud jsme kreslili jen konvexní polygony makrem polygon. Následuje syntax makra gl-block umožňující kreslit další primitiva OpenGL. (gl-block primitive form ) Kde primitive je jeden z následujících symbolů: points, lines, line-strip, line-loop, polygon, quads, quad-strip, triangles, triangle-strip, triangle-fan. Výrazy makra slouží k zadávání vrcholů primitiva (funkcí vertex). Význam primitiv je popsán na obrázku 2. Úkol 1. Napište funkci vectors-linear-combination, která vrátí lineární kombinaci zadaných vektorů se zadanými koeficienty. 8

Obrázek 2: Primitiva OpenGL Úkol 2. Napište funkci points-combination, která vrátí affiní kombinaci zadaných bodů se zadanými koeficienty. Úkol 3. Nakreslete kvadratickou Bézierovu křivku. Úkol 4. Nakreslete Bézierovu křivku zadanou n řídícími body. Úkol 5. Vytvořte plátno, které umožní uživateli zadávat řídící body Bézierovy křivky. 9