Grafika Komputerowa Materiały Laboratoryjne

Podobne dokumenty
Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń

Języki formalne i automaty Ćwiczenia 5

Grafika Komputerowa Materiały Laboratoryjne

Grafika Komputerowa Materiały Laboratoryjne

Wstęp Pierwsze kroki Pierwszy rysunek Podstawowe obiekty Współrzędne punktów Oglądanie rysunku...

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Modele i symulacje - Scratch i Excel

Poprawność semantyczna

Rysowanie precyzyjne. Polecenie:

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Grafika Komputerowa Materiały Laboratoryjne

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Strategia "dziel i zwyciężaj"

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Java. Wykład 9. Piotr Tronczyk

Oscyloskop (007; ; arduino; processing)

Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Struktury Danych i Złożoność Obliczeniowa

GIMNAZJALISTO, ZRÓB TO SAM PROGRAMOWANIE W SCRATCHU

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Logo Komeniusz. Gimnazjum w Tęgoborzy. Mgr Zofia Czech

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

Instrukcje dla zawodników

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

TRYGONOMETRIA FUNKCJE TRYGONOMETRYCZNE KĄTA SKIEROWANEGO

3.27pt. Algorytmy i programowanie ze Scratchem

Algorytmy grafiki rastrowej. Mirosław Głowacki Wykład z Grafiki Komputerowej

Rysowanie punktów na powierzchni graficznej

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

Drzewa poszukiwań binarnych

Tematy lekcji informatyki klasa 4a styczeń 2013

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Techniki wizualizacji. Ćwiczenie 10. System POV-ray tworzenie animacji

Wymagania edukacyjne z matematyki

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Kultywator rolniczy - dobór parametrów sprężyny do zadanych warunków pracy

Algorytmy sortujące i wyszukujące

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

4. Funkcje. Przykłady

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

1. Prymitywy graficzne

4. Rysowanie krzywych

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.

1 Wstęp teoretyczny. Temat: Obcinanie odcinków do prostokąta. Grafika komputerowa 2D. Instrukcja laboratoryjna Prostokąt obcinający

Wstęp do programowania

Wprowadzenie do QT OpenGL

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

ALGORYTMY I STRUKTURY DANYCH

Grafika Komputerowa Materiały Laboratoryjne

Algorytm selekcji Hoare a. Łukasz Miemus

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

Główne elementy zestawu komputerowego

Rys 3-1. Rysunek wałka

O czym należy pamiętać?

AUTOCAD MIERZENIE I PODZIAŁ

INSTRUKCJA DO ĆWICZENIA 5

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Drzewa czerwono-czarne.

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE 5 UWARUNKOWANIA TECHNICZNE. Scenariusz lekcji.

GRAFIKA ŻÓŁWIA. PDF stworzony przez wersję demonstracyjną pdffactory Pro CZĘŚĆ 1 OPRACOWAŁ: Wojciech Rogowicz

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.

Symulacja działania sterownika dla robota dwuosiowego typu SCARA w środowisku Matlab/Simulink.

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

Sieciowe Technologie Mobilne. Laboratorium 4

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Język C zajęcia nr 11. Funkcje

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

str 1 WYMAGANIA EDUKACYJNE ( ) - matematyka - poziom podstawowy Dariusz Drabczyk

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

TWORZENIE OBIEKTÓW GRAFICZNYCH

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Scenariusz lekcji. scharakteryzować budowę procedury w języku Logo; rozróżnić etapy tworzenia i wykonania procedury;

PODSTAWY > Figury płaskie (1) KĄTY. Kąt składa się z ramion i wierzchołka. Jego wielkość jest mierzona w stopniach:

Podstawy Programowania 2 Rekurencja, metoda dziel i zwyciężaj. Plan. Rekurencja Wstęp. Rekurencja Wstęp. Notatki. Notatki. Notatki.

Moduł Grafika komputerowa i multimedia 312[01].S2. Ćwiczenia Podstawy programu Autocad 2011 Polilinia

Warsztaty komputerowe

Listy, kolejki, stosy

Wyrównanie ciągu poligonowego dwustronnie nawiązanego metodą przybliżoną.

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Ogólne wiadomości o grafach

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

13. WYZNACZANIE CHARAKTERYSTYK ORAZ PRZEŁOŻENIA UKŁADU KIEROWNICZEGO

Struktury danych: stos, kolejka, lista, drzewo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Zatem standardowe rysowanie prymitywów wygląda następująco:

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Algorytmika i programowanie

STWORZENIE PRZYKŁADOWEJ

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Transkrypt:

Grafika Komputerowa Materiały Laboratoryjne Laboratorium 6 Processing c.d. Wstęp Laboratorium 6 poszerza zagadnienie generowania i przetwarzania obrazów z wykorzystaniem języka Processing 2, dedykowanego do obróbki grafiki. Ćwiczenie 1 Rekurencja Zadanie: Narysuj prosty fraktal kołowy Zbuduj algorytm Fraktal kołowy polega na rysowaniu koła a kolejnych poziomów, gdzie rysowania fraktala kolejny poziom polega na narysowaniu 4 kół o promieniu dwukrotnie kołowego mniejszym niż koło poprzedniego poziomu i środkach rozmieszczonych równomiernie po krawędzi koła poprzedniego poziomu Algorytm rysujący jest dość prosty i pobiera jako parametry współrzędne i promień pierwszego koła oraz minimalną wielkość najmniejszego koła (niezbędną do zakończenia rekurencyjnego wywoływania funkcji). void rysujkolo(float x, float y, float promien, int min) { ellipse(x, y, promien, promien); if(promien > min) { rysujkolo(x + promien/2, y, promien/2, min); rysujkolo(x - promien/2, y, promien/2, min); rysujkolo(x, y + promien/2, promien/2, min); rysujkolo(x, y - promien/2, promien/2, min); Przykładowy efekt działania funkcji

Zmodyfikuj algorytm rysowania frakala, tak aby możliwe było wybieranie (parametr wywołania funkcji) wersji fraktala z 2, 4 lub 8 kołami w następnym poziomie. Ćwiczenie 2 Rekurencja Zadanie: Narysuj trójkąt Sierpińskiego Zbuduj funkcję Trójkąt Sierpińskiego jest fraktalem rysowanym według zasady: Każdy rekurencyjną, rysującą trójkąt poprzedniego poziomu jest zastępowany przez grupę 3 trójkątów o trójkąt Sierpińskiego wierzchołkach rozmieszczonych tak, że jeden z nich pokrywa się z dowolnego poziomu wierzchołkiem trójkąta poprzedniego poziomu a pozostałe dwa umieszczane są w połowie boków trójkąta poprzedniego poziomu Aby zbudować taki trójkąt potrzebne są więc współrzędne trójkąta 1-go poziomu oraz ilość poziomów. Algorytm rysujący będzie musiał wyliczać pozycje wierzchołków kolejnych trójkątów dzieląc na pół odcinki między wierzchołkami trójkąta poprzedniego poziomu. Zapis współrzędnych wierzchołków można uprościć stosując klasę Pvector pozwalającą na zapis współrzędnych wektora (2 lub 3 wymiarowych) lewy = new PVector(x, y) Funkcja realizująca rysowanie trójkątów Sierpińskiego ma 5 parametrów: Bieżący poziom rysowania trójkątów, maksymalny poziom rysowania trójkątów, 3 współrzędne bieżącego trójkąta Funkcja zawiera instrukcję warunkową, w przypadku gdy jesteśmy na ostatnim poziomie rysowany jest trójkąt. W przeciwnym przypadku obliczane są współrzędne środków odcinków bieżącego trójkąta i wywoływana jest rekurencyjnie funkcja narysowania 3 trójkątów

kolejnego poziomu. void TrojkatS(int poziom, int maxpoziom, PVector lewy, PVector gora, PVector prawy) { poziom++; if(poziom >= maxpoziom) { triangle(lewy.x, lewy.y, gora.x, gora.y, prawy.x, prawy.y); else { PVector a = PVector.add(lewy, PVector.div(PVector.sub(gora, lewy), 2)); PVector b = PVector.add(prawy, PVector.div(PVector.sub(gora, prawy), 2)); PVector c = PVector.add(lewy, PVector.div(PVector.sub(prawy, lewy), 2)); TrojkatS(poziom, maxpoziom, a, gora, b); TrojkatS(poziom, maxpoziom, lewy, a, c); TrojkatS(poziom, maxpoziom, c, b, prawy); Pozostaje zdefiniowanie rozmiarów kna, kolorów linii, wypełnienia i tła oraz początkowe wywołanie funkcji. Efekt końcowy: Zmodyfikuj algorytm rysowania trójkąta Sierpińskiego tak, aby rysowane były również trójkąty z pośrednich poziomów. Trójkąty każdego z poziomów powinny być wypełniane innym kolorem.

Ćwiczenie 3 Rekurencja Zadanie: Narysuj drzewo binarne Zbuduj algorytm Drzewo binarne polega na ryswaniu linii (gałęzi) z każdej gałęzi rysowania drzewa poprzedniego poziomu, począwszy od pierwszej linii-korzenia. W drzewie binarnego binarnym z gałęzi wyrastają zawsze dwie gałęzie kolejnego poziomu Kąt wychylenia kolejnych poziomów gałęzi (w powyższym przypadku 45 stopni) może być w zakresie 0-90 i niekoniecznie taki sam dla obu konarów. Algorytm rysujący tym razem zamiast obliczania położenia kolejnych gałęzi wymaga zapisywania na stosie kolejnych przekształceń kanwy (obrót). float kat = radians(45); void setup() { size(640, 360); void draw() { background(255); stroke(0); translate(width/2,height); //początkowy pien drzewa line(0,0,0,-120); translate(0,-120); konar(120); void konar(float h) { // Zmniejszenie długości o 1/3 h *= 0.66; if (h > 10) { //konar 1 pushmatrix(); rotate(kat); line(0, 0, 0, -h); translate(0, -h); konar(h); popmatrix(); //konar 2 pushmatrix(); rotate(-kat); line(0, 0, 0, -h); translate(0, -h); konar(h); popmatrix();

Zmodyfikuj algorytm rysowania drzewa binarnego tak, aby gałęzie były rysowane z losowym odchyleniem od zdefiniowanej wartości ich nachylenia. Odchylenie powinno zawierać się w zakresie +-10% zdefiniowanej wartości. Kolejne poziomy powinny być rysowane ze zmianą koloru. Gałęzie w kolejnych poziomach powinny być rysowane cieńszą linią niż poziom wcześniejszy. Wprowadź losową modyfikację długości gałęzi Ćwiczenie 4 Animacja Zadanie: Animuj drzewo binarne Zbuduj algorytm Na poprzednim laboratorium sygnalizowaliśmy, że Processing może animowania rozkładania się pracować w trybie aktywnym. Obecnie wykorzystamy tą możliwość do wykonania animacji rozkładania się drzewa binarnego. drzewa binarnego Przypominając: komendy zawarte w obszarze draw() { wykonywane są

cyklicznie. Częstotliwość przerysowywania obrazu można regulować parametrem framerate(n) umieszczonym w tym obszarze. Processing będzie się starał utrzymać zdefiniowaną ilość klatek na sekundę w miarę złożoności rysunku i możliwości sprzętowych. Modyfikacja algorytmu z ćwiczenia 3 będzie polegała więc na wprowadzeniu zmiennej odpowiadającej za kąt rozwarcia gałęzi i zwiększanie jej co klatkę. Dodatkowo wprowadzamy ograniczenie rozwarcia gałęzi do 90 stopni void draw() { if (b <= 90) b++; kat = radians(b); Zmodyfikuj algorytm tak aby drzewo rozkładało i składało się w pętli. Rozpoczynając od rozłożonego drzewa (np. 45 stopni) zbuduj algorytm animacji kiwania się na wietrze czyli odchylania wszystkich gałęzi w tą samą stronę i powrotu. Spróbuj uwzględnić efekt przyspieszania przy rozpoczynaniu ruchu i zwalniania przy osiąganiu stanu końcowego.