Raytracing: krok po kroku cz soft shading
|
|
- Janusz Murawski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Raytracing: krok po kroku cz soft shading I. Co/Dlaczego? Kolejnym elementem który na naszych obrazach jest zawsze nierealistycznie ostry są cienie (ang. hard shadows). Dzieje się tak dlatego że źródła światła w prawdziwym świecie mają pewną niezerową wielkość - a my używamy światła punktowego (point light). W tym artykule zajmiemy się symulacją nieostrych, miękkich cieni (ang. soft shadows). (po lewej - nasz cel, czyli soft shadow, po prawej - to co jest obecnie, czyli hard shadow) I. Kilka pomysłów Na świecie nie wszystko można podzielić jednoznacznie podzielić na światło i cień. W momencie kiedy część źródła światła dochodząca do danego punktu jest zasłonięta przez inny obiekt pojawia się półcień. Niestety, dokładne obliczenie jak dużo światła dociera do obiektu byłoby zadaniem bardzo trudnym, powolnym, oraz niemożliwym do zrealizowania w sposób ogólny dla dowolnego obiektu. Na szczęście, napisałem `dokładne obliczenie` - nie jesteśmy jeszcze na straconej pozycji. Na ratunek przybywa po raz kolejny sampling... W jaki sposób wykorzystać sampling do symulowania miękkich cieni? Możemy przetestować kilka różnych ścieżek którymi światło nadchodzi do obiektu i oszacować na tej podstawie ilość docierającego światła (patrz - ilustracja). Pierwszym, naiwnym podejściem jest rzucenie promieni jednorodnie we wszystkich kierunkach dookoła i sprawdzanie czy trafiły na źródło światła: 1
2 Jeśli ktoś lubi doświadczenia i chciałby przetestować ten sposób w praktyce - należy wziąć kamień (reprezentujący promień) do rąk, zamknąć oczy, obrócić się kilka razy dookoła i rzucić kamieniem. Jeśli kamień trafi w lampę albo inne źródło światła - światło dociera do miejsca gdzie rzucający stoi. Jeśli kamień trafi w przeszkodę, jak ścianę, wiemy że z tego kierunki nie dociera światło. Należy eksperyment powtórzyć wielokrotnie - im więcej razy kamień trafi w światło na, powiedzmy, sto rzutów, w tym jaśniejszym stoimy miejscu (więcej lamp było dookoła). Taki sposób jest bardzo niewydajny -w przypadku na przykład żarówki znajdującej się w pewnej odległości, szansa na to że losowo skierowany promień (rzucony kamień) z odległego punktu w nią trafi jest bardzo mała - większość sceny będzie kompletnie czarna, ponieważ najczęściej nie uda nam się trafić ani jednym promieniem w źródło światła. Na szczęście jest lepszy sposób - możemy odwrócić sposób myślenia i śledzić promienie od światła w kierunku cieniowanego punktu: Taki sposób jest dużo wydajniejszy. Jeśli przyjąć znowu porównanie promienia do kamienia, to tak jakby lampa w pokoju nagle zyskała świadomość i zaczęła rzucać w nas kamieniami. Już po kilku rzuconych kamieniach poszkodowany możne dość trafnie określić jak bardzo jest odsłonięty przed rozwścieczoną lampą. 2
3 Ponieważ i tak wykonujemy antyaliasing, problem jeszcze się upraszcza - dla każdego piksela tak czy inaczej testujemy wiele promieni, więc obliczanie stosunku `trafiających` i `zablokowanych` promieni dostajemy za darmo (jeśli na przykład do piksela, przy użyciu soft shadingu, dojdzie 12 promieni a 4 zostaną zablokowane przez inny obiekt, suma wchodzącego światła wyniesie 3/4 pełnej jasności - ponieważ 12 promieni liczymy normalnie, a 4 promienie pomijamy). Czyli tak - nasz dotychczasowy (przedstawiony w poprzednich artykułach) sposób postępowania można podsumować tak: 1. Sprawdź czy pomiędzy światłem a cieniowanym punktem jest przeszkoda 2. Jeśli nie, wkład światła wynosi zero. Jeśli tak, licz dalej normalnie. A dodając miękkie cienie, będziemy działać tak: 1. Wybierz punkt na powierzchni światła 2. Sprawdź czy pomiędzy punktem na powierzchni światła a cieniowanym punktem jest przeszkoda 3. Jeśli nie, wkład światła wynosi zero. Jeśli tak, licz dalej normalnie. Wygląda wystarczająco prosto... II. Implementacja Zaczniemy od stworzenia od nowa klasy światła - powinna ona, podobnie ja poprzednia, przechowywać kolor, oraz dodatkowo udostępniać metodę Sample() zwracającą punkt leżący na powierzchni źródła światła. Uprościmy sobię trochę pisanie, i zaimplementujemy jedynie kuliste źródła światła, ponieważ oszczędzi nam to tworzenia dodatkowego interfejsu i klas, a strata w większości przypadków będzie zerowa. Za pomocą tej jednej klasy będziemy symulować jednocześnie światło obszarowe (ang. area light) i światło punktowe (jako światło obszarowe z zerowym promieniem) - nazwiemy ją więc po prostu Light. Tak więc musimy znaleźć sposób generowania punktów na powierzchni kuli - wykorzystamy do tego metodę zaprezentowaną na przykład na tej stronie: Jeśli kogoś interesuje w jaki sposób został wyprowadzony ten wzór (żeby nie dublować materiału, obliczenia nie są tutaj kopiowane), może przeanalizować to: Kroki wykonywane w tym algorytmie można, jak zaprezentowano w pierwszym liknu, podsumować następująco: 1. Wybrać współrzędną z z zakresu [ 1;1] 2. Wybrać współczynnik t z zakresu [ 0;2π ] r = 1 z x = r * cos( t) y = r * sin( t) Mapowanie sampli na powierzchnię kuli, korzystając z przedstawionego algorytmu, realizowane jest taką oto prostą funkcją: Vector3 RemapSampleToUnitSphere(Vector2 sample) double z = 2 * sample.x - 1; double t = 2 * Math.PI * sample.y; double r = Math.Sqrt(1 - z * z); return new Vector3( r * Math.Cos(t), r * Math.Sin(t), z); 3
4 I... to właściwie tyle jesli chodzi o pisanie klasy światła. Możemy spokojnie dopisać resztę, czyli konstruktory i obsługę przypadku światła punktowego: class Light Vector3 center; double radius; Sampler sampler; ColorRgb color; // Konstruktor udający światło punktowe public Light(Vector3 position, ColorRgb color) : this(position, color, null, 0) // pełny konstruktor public Light(Vector3 center, ColorRgb color, Sampler sampler, double radius) this.center = center; this.radius = radius; this.sampler = sampler; this.color = color; public Vector3 Sample() if (radius == 0) return center; // symulowanie światła punktowego var sample = sampler.single(); return center + RemapSampleToUnitSphere(sample) * radius; Vector3 RemapSampleToUnitSphere(Vector2 sample) double z = 2 * sample.x - 1; double t = 2 * Math.PI * sample.y; double r = Math.Sqrt(1 - z * z); return new Vector3( r * Math.Cos(t), r * Math.Sin(t), z); public ColorRgb Color get return color; III. Łączenie w całość Teraz pozostaje dostosować resztę systemu tak żeby działała z nowym światłem. W tym celu musimy zmienić wszystkie wystąpienia poprzedniej, przestarzałej już klasy PointLight na nową klasę Light. Nie jest ich aż tak dużo jak mogłoby się wydawać. Zaczynając od klasy World, pojawia się ona w liście świateł na świecie: List<PointLight> lights; Co zamieniamy, razem z operującymi na niej metodami, na List<Light> lights; Dalej, musimy zmienić fragment w klasie Phong (i analogicznie w PerfectDiffuse) w związku z tym że znikła nam właściwość Position. Tak więc zmieniamy ten kod: Vector3 indirection = (light.position - hit.hitpoint).normalized; double diffusefactor = indirection.dot(hit.normal); if (diffusefactor < 0) continue; 4
5 if (hit.world.anyobstaclebetween(hit.hitpoint, light.position)) continue; Musimy pobrać pozycję światła za pomocą metody.sample() i użyć jej zamiast light.position: Vector3 lightpos = light.sample(); Vector3 indirection = (lightpos - hit.hitpoint).normalized; double diffusefactor = indirection.dot(hit.normal); if (diffusefactor < 0) continue; if (hit.world.anyobstaclebetween(hit.hitpoint, lightpos)) continue; IV. Wyniki Jak zwykle, pod koniec wypada zaprezentować działanie kodu przedstawionego w artykule. Żeby użyć nowego, obszarowego światła w renderowanej scenie należy wykonać dwa kroki: 1) Stworzyć sampler dla światła: Sampler arealightsampler = new Sampler( new Jittered(0), // generator new SquareDistributor(),// dystrybutor SampleCt, // ilość sampli 97); // ilość zestawów sampli 2) Stworzyć samo światło: world.addlight(new Light( new Vector3(6, 2, 0), // pozycja światła Color.White, // kolor światła arealightsampler, // sampler 2)); // promień Im większy promień światła tym bardziej rozmyte krawędzie cienia - za to przy wielkości światła równej zero, otrzymujemy zupełnie ostre cienie, identyczne do dotychczasowych: 5
6 Pozostaje dodać wariację na temat jedynej słusznej sceny z trzema kulami, tym razem w trochę 'mroczniejszym' nastroju: 6
Raytracing: krok po kroku cz. 7 - doskonałe odbicie lustrzane
Raytracing: krok po kroku cz. 7 - doskonałe odbicie lustrzane I. Co/Dlaczego? Jako że dodawanie kolejnych materiałów jest jednocześnie dość proste i powoduje szybkie efekty, spróbujemy w tej części pójść
Raytracing: krok po kroku
Raytracing: krok po kroku cz. 8- sampling i antyaliasing I. Co/Dlaczego? W tej części zajmiemy się głównie omawianiem samplingu - czyli generowania losowych punktów, tzw. sampli (określanych również jako
Zaawansowana Grafika Komputerowa
Zaawansowana Komputerowa Michał Chwesiuk Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki 28 Luty 2017 Michał Chwesiuk Zaawansowana Komputerowa 28 Luty 2017 1/11 O mnie inż.
Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.
Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Chcąc osiągnąć realizm renderowanego obrazu, należy rozwiązać problem świetlenia. Barwy, faktury i inne właściwości przedmiotów postrzegamy
Animowana grafika 3D. Opracowanie: J. Kęsik.
Animowana grafika 3D Opracowanie: J. Kęsik kesik@cs.pollub.pl Powierzchnia obiektu 3D jest renderowana jako czarna jeżeli nie jest oświetlana żadnym światłem (wyjątkiem są obiekty samoświecące) Oświetlenie
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera
Oświetlenie obiektów 3D
Synteza i obróbka obrazu Oświetlenie obiektów 3D Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych Rasteryzacja Spłaszczony po rzutowaniu obraz siatek wielokątowych
WSTĘP DO GRAFIKI KOMPUTEROWEJ
WSTĘP DO GRAFIKI KOMPUTEROWEJ Miłosz Michalski Institute of Physics Nicolaus Copernicus University Październik 2015 1 / 15 Plan wykładu Światło, kolor, zmysł wzroku. Obraz: fotgrafia, grafika cyfrowa,
Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38
Wykład 5 Potok Renderowania Oświetlenie mgr inż. 1/38 Podejście śledzenia promieni (ang. ray tracing) stosuje się w grafice realistycznej. Śledzone są promienie przechodzące przez piksele obrazu wynikowego
Leszek Stasiak Zastosowanie technologii LINQ w
Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska
OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera
Gry komputerowe: efekty specjalne cz. 2
1/43 Gry komputerowe: efekty specjalne cz. 2 Przygotowała: Anna Tomaszewska 2/43 Mapowanie środowiska - definicja aproksymacje odbić na powierzchnie prosto- i krzywoliniowej," oświetlanie sceny." obserwator
Julia 4D - raytracing
i przykładowa implementacja w asemblerze Politechnika Śląska Instytut Informatyki 27 sierpnia 2009 A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja
Co należy zauważyć Rzuty punktu leżą na jednej prostej do osi rzutów x 12, którą nazywamy prostą odnoszącą Wysokość punktu jest odległością rzutu
Oznaczenia A, B, 1, 2, I, II, punkty a, b, proste α, β, płaszczyzny π 1, π 2, rzutnie k kierunek rzutowania d(a,m) odległość punktu od prostej m(a,b) prosta przechodząca przez punkty A i B α(1,2,3) płaszczyzna
KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT
KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT Temat: Zaimplementować system kryptografii wizualnej http://www.cacr.math.uwaterloo.ca/~dstinson/visual.html Autor: Tomasz Mitręga NSMW Grupa 1 Sekcja 2 1. Temat projektu
Systemy wirtualnej rzeczywistości. Komponenty i serwisy
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki
Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)
Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych) Funkcja uwikłana (równanie nieliniowe) jest to funkcja, która nie jest przedstawiona jawnym przepisem, wzorem wyrażającym zależność wartości
GRK 4. dr Wojciech Palubicki
GRK 4 dr Wojciech Palubicki Uproszczony Potok Graficzny (Rendering) Model Matrix View Matrix Projection Matrix Viewport Transform Object Space World Space View Space Clip Space Screen Space Projection
C++ Przeładowanie operatorów i wzorce w klasach
C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje
Gimp - poznaj jego możliwości!
Artykuł pobrano ze strony eioba.pl Gimp - poznaj jego możliwości! Gimp to program do tworzenia grafiki bitmapowiej - daje ogromne możliwości, a do tego jest darmowy! Spróbuj skorzystać z możliwości, jakie
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Ćwiczenie 42 WYZNACZANIE OGNISKOWEJ SOCZEWKI CIENKIEJ. Wprowadzenie teoretyczne.
Ćwiczenie 4 WYZNACZANIE OGNISKOWEJ SOCZEWKI CIENKIEJ Wprowadzenie teoretyczne. Soczewka jest obiektem izycznym wykonanym z materiału przezroczystego o zadanym kształcie i symetrii obrotowej. Interesować
Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np
Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami
Implementacja filtru Canny ego
ANALIZA I PRZETWARZANIE OBRAZÓW Implementacja filtru Canny ego Autor: Katarzyna Piotrowicz Kraków,2015-06-11 Spis treści 1. Wstęp... 1 2. Implementacja... 2 3. Przykłady... 3 Porównanie wykrytych krawędzi
PROJEKT FIRMY BUDOWLANEJ
PROJEKT FIRMY BUDOWLANEJ Grupa osób zastanawia się czy otworzenie spółdzielni socjalnej w ich mieście jest dobrym pomysłem na prowadzenie interesu. Spółdzielnia A chciałaby się zająć pracami remontowo
Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.
Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to
3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest
Pętle Pętla to pewien fragment kodu, który jest wykonywany wielokrotnie. Wyobraź sobie taką sytuację. Piszesz program do szyfrowania danych. Dane są szyfrowane kolejno bajt po bajcie. Załóżmy, że plik
Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie
Model oświetlenia Radosław Mantiuk Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Obliczenie koloru powierzchni (ang. Lighting) Światło biegnie od źródła światła, odbija
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Pole magnetyczne magnesu w kształcie kuli
napisał Michał Wierzbicki Pole magnetyczne magnesu w kształcie kuli Rozważmy kulę o promieniu R, wykonaną z materiału ferromagnetycznego o stałej magnetyzacji M = const, skierowanej wzdłuż osi z. Gęstość
Lista dwukierunkowa - przykład implementacji destruktorów
Lista dwukierunkowa - przykład implementacji destruktorów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2008 Bogdan Kreczmer Niniejszy dokument zawiera
Podstawy POV-Ray a. Diana Domańska. Uniwersytet Śląski
Podstawy POV-Ray a Diana Domańska Uniwersytet Śląski Kamera Definicja kamery opisuje pozycję, typ rzutowania oraz właściwości kamery. Kamera Definicja kamery opisuje pozycję, typ rzutowania oraz właściwości
Technologie i usługi internetowe cz. 2
Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,
7. Pętle for. Przykłady
. Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i
O sięganiu głębiej CZWARTY WYMIAR
O sięganiu głębiej CZWARTY WYMIAR Czym jest wymiar? Flatlandia; czyli kraina płaszczaków Edwin A. Abbott Życie w krainie 2. wymiaru Świat w którym żył Kwadrat jest kształtu kartki papieru, a zaludniają
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Programowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Aleksandra Zając. Raport. Blender. Pokemon: Eevee
Aleksandra Zając Raport Blender Pokemon: Eevee 1. Modelowanie Przed rozpoczęciem modelowania do Blendera załadowałam obraz przedstawiający wybranego pokemona, aby podczas modelowania jak najlepiej odwzorować
10. Programowanie obiektowe w PHP5
Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE
Plan wykładu. Akcelerator 3D Potok graficzny
Plan wykładu Akcelerator 3D Potok graficzny Akcelerator 3D W 1996 r. opracowana została specjalna karta rozszerzeń o nazwie marketingowej Voodoo, którą z racji wspomagania procesu generowania grafiki 3D
Wyznaczanie stałej słonecznej i mocy promieniowania Słońca
Wyznaczanie stałej słonecznej i mocy promieniowania Słońca Jak poznać Wszechświat, jeśli nie mamy bezpośredniego dostępu do każdej jego części? Ta trudność jest codziennością dla astronomii. Obiekty astronomiczne
Zmienne losowe i ich rozkłady
Zmienne losowe i ich rozkłady 29 kwietnia 2019 Definicja: Zmienną losową nazywamy mierzalną funkcję X : (Ω, F, P) (R n, B(R n )). Definicja: Niech A będzie zbiorem borelowskim. Rozkładem zmiennej losowej
Microsoft Small Basic
Microsoft Small Basic Obiekt Math Szacowany czas trwania lekcji: 1 godzina Obiekt Math Podczas tej lekcji dowiesz się, jak: Używać różnych właściwości obiektu Math. Używać różnych operacji obiektu Math.
MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)
MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny) SPOSÓB 1 (z rozszerzeniem mnożnika): Algorytm jak zwykle jest prosty: lewostronne rozszerzenie mnożnej o kilka cyfr (na pewno wystarczy
MATERIAŁ ĆWICZENIOWY Z MATEMATYKI
Materiał ćwiczeniowy zawiera informacje prawnie chronione do momentu rozpoczęcia diagnozy. Materiał ćwiczeniowy chroniony jest prawem autorskim. Materiału nie należy powielać ani udostępniać w żadnej innej
Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.
Oświetlenie w OpenGL Oprogramowanie i wykorzystanie stacji roboczych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl W OpenGL źródło światła w scenie składa się z trzech składowych oświetlenia: otoczenia,
Środowisko programistyczne GEANT4
Środowisko programistyczne GEANT4 Leszek Adamczyk Wydział Fizyki i Informatyki Stosowanej Akademia Górniczo-Hutnicza Wykłady w semestrze zimowym 2013/2014 G4VHit - przykład Przykład z warsztatów implementacji
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Publikacja jest dystrybuowana bezpłatnie Program Operacyjny Kapitał Ludzki Priorytet 9 Działanie 9.1 Poddziałanie
Zastosowania Robotów Mobilnych
Zastosowania Robotów Mobilnych Temat: Zapoznanie ze środowiskiem Microsoft Robotics Developer Studio na przykładzie prostych problemów nawigacji. 1) Wstęp: Microsoft Robotics Developer Studio jest popularnym
Podłączanie bibliotek Zapis danych do pliku graficznego Generowanie promienia pierwotnego Import sceny z pliku Algorytm ray tracingu
Ray Tracer cz.1 Michał Chwesiuk Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki 4 Kwiecień 2017 Michał Chwesiuk Ray Tracer cz.1 4 Kwiecień 2017 1/21 Plan zajęć laboratoryjnych
Rysowanie punktów na powierzchni graficznej
Rysowanie punktów na powierzchni graficznej Tworzenie biblioteki rozpoczniemy od podstawowej funkcji graficznej gfxplot() - rysowania pojedynczego punktu na zadanych współrzędnych i o zadanym kolorze RGB.
Programowanie obiektowe i zdarzeniowe
Programowanie obiektowe i zdarzeniowe wkład 2 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak zdefiniować w programie punkt? = 3; = 2; Może tak? // wpisanie informacji Console.WriteLine("
Programowanie Obiektowe Ćwiczenie 4
Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Co łączy te krzywe? (cz.2) W ostatnim artykule zajęliśmy się okręgiem i elipsą. Teraz czas na kolejną oryginalną krzywą parabolę.
Co łączy te krzywe? (cz.2) W ostatnim artykule zajęliśmy się okręgiem i elipsą. Teraz czas na kolejną oryginalną krzywą parabolę. Most Golden Gate w San Francisco, źródło: http://maxpixel.freegreatpicture.com/golden-gate-bridge-bay-san-
Ćwiczenie 1 Galeria zdjęć
Galeria zdjęć Pobierz przykład (http://jsekulska.kis.p.lodz.pl/studia.htm). Krok 1 Ustawienie stołu montażowego Otwieramy nowy plik i nazywamy go (np. gallery.fla). Ustawiamy wielkość pola roboczego na
programowanie w oparciu o platformę netbeans w praktyce
programowanie w oparciu o platformę netbeans w praktyce Adam Kędziora. Netbeans innovators grants. Mechanizm lookup jako panorama firm. Węzły w netbeans. Mechanizm lookup jako torba z narzędziami. Dwa
Sieciowe Technologie Mobilne. Laboratorium 2
Sieciowe Technologie Mobilne Laboratorium 2 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 2 Na dzisiejszym laboratorium skupimy się na implementacji
wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy
i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ
Programowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać
1 Nierówność Minkowskiego i Hoeldera
1 Nierówność Minkowskiego i Hoeldera Na państwa użytek załączam precyzyjne sformułowania i dowody nierówności Hoeldera i Minkowskiego: Twierdzenie 1.1 Nierówność Hoeldera). Niech p, q będą takimi liczbami
Informatyka I: Instrukcja 4.2
Informatyka I: Instrukcja 4.2 1 Wskaźniki i referencje - bezboleśnie Nauczyliśmy się do tej pory, że funkcje w języku C mogą zwracać wartość. Co jednak, gdybyśmy chcieli napisać funkcję, która rozwiąże
Grafika 3D program POV-Ray - 1 -
Temat 1: Ogólne informacje o programie POV-Ray. Interfejs programu. Ustawienie kamery i świateł. Podstawowe obiekty 3D, ich położenie, kolory i tekstura oraz przezroczystość. Skrót POV-Ray to rozwinięcie
Algorytm SAT. Marek Zając 2012. Zabrania się rozpowszechniania całości lub fragmentów niniejszego tekstu bez podania nazwiska jego autora.
Marek Zając 2012 Zabrania się rozpowszechniania całości lub fragmentów niniejszego tekstu bez podania nazwiska jego autora. Spis treści 1. Wprowadzenie... 3 1.1 Czym jest SAT?... 3 1.2 Figury wypukłe...
Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe
Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe Czym są tekstury? Tekstury są tablicowymi strukturami danych o wymiarze od 1 do 3, których elementami są tzw. teksele.
Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów Obiekty W codziennym życiu mamy do czynienia z
Podział sieci na podsieci wytłumaczenie
Podział sieci na podsieci wytłumaczenie Witam wszystkich z mojej grupy pozdrawiam wszystkich z drugiej grupy. Tematem tego postu jest podział sieci na daną ilość podsieci oraz wyznaczenie zakresów IP tychże
Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);
Ciała i wielomiany 1 Ciała i wielomiany 1 Definicja ciała Niech F będzie zbiorem, i niech + ( dodawanie ) oraz ( mnożenie ) będą działaniami na zbiorze F. Definicja. Zbiór F wraz z działaniami + i nazywamy
Podstawy programowania obiektowego
Podstaw programowania obiektowego wkład 5 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak, korzstając z dotchczasowej wiedz, zdefiniować w programie punkt? = 3; = 2; Może tak?
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski
RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski Plan wykładu Rendering cieni wprowadzenie Cienie w grafice komputerowej Rendering off-line i rendering w czasie rzeczywistym Cienie rozmyte i ostre Mapy
Programowanie w Baltie klasa VII
Programowanie w Baltie klasa VII Zadania z podręcznika strona 127 i 128 Zadanie 1/127 Zadanie 2/127 Zadanie 3/127 Zadanie 4/127 Zadanie 5/127 Zadanie 6/127 Ten sposób pisania programu nie ma sensu!!!.
Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady
Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy
Gra Labirynt Zajęcia 5
Gra Labirynt Zajęcia 5 Cel zajęć: Zaprogramowanie duszków-skarbów, aby zniknęły po dotknięciu przez bohatera. Dodanie ostatnich plansz gry i zaprogramowanie zakończenia gry. Przekazywane umiejętności:
Grafika komputerowa. Model oświetlenia. emisja światła przez źródła światła. interakcja światła z powierzchnią. absorbcja światła przez sensor
Model oświetlenia emisja światła przez źródła światła interakcja światła z powierzchnią absorbcja światła przez sensor Radiancja radiancja miara światła wychodzącego z powierzchni w danym kącie bryłowym
Generatory. Michał R. Przybyłek
Generatory Michał R. Przybyłek 1 Wstęp Generator to potencjalnie nieskończony, leniwie obliczany, ciąg wartości. W zależności od tego, która ze stron decyduje o wygenerowaniu nowej wartości wyróżniamy
Lista, Stos, Kolejka, Tablica Asocjacyjna
Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,
OPTYKA GEOMETRYCZNA I INSTRUMENTALNA
1100-1BO15, rok akademicki 2018/19 OPTYKA GEOMETRYCZNA I INSTRUMENTALNA dr hab. Raał Kasztelanic Wykład 4 Obliczenia dla zwierciadeł Równanie zwierciadła 1 1 2 1 s s r s s 2 Obliczenia dla zwierciadeł
1 Układy równań liniowych
II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie
Prawdopodobieństwo i statystyka
Wykład VII: Metody specjalne Monte Carlo 24 listopada 2014 Transformacje specjalne Przykład - symulacja rozkładu geometrycznego Niech X Ex(λ). Rozważmy zmienną losową [X ], która przyjmuje wartości naturalne.
Grafika realistyczna. Oświetlenie globalne ang. global illumination. Radosław Mantiuk
Oświetlenie globalne ang. global illumination Radosław Mantiuk Generowanie obrazów z uwzględnieniem oświetlenia globalnego Cel oświetlenia globalnego obliczenie drogi promieni światła od źródeł światła
4/4/2012. CATT-Acoustic v8.0
CATT-Acoustic v8.0 CATT-Acoustic v8.0 Oprogramowanie CATT-Acoustic umożliwia: Zaprojektowanie geometryczne wnętrza Zadanie odpowiednich współczynników odbicia, rozproszenia dla wszystkich planów pomieszczenia
SPRAWDZIAN NR 1. I promienie świetlne nadal są równoległe względem siebie, a po odbiciu od powierzchni II nie są równoległe względem siebie.
SPRAWDZIAN NR 1 ŁUKASZ CHOROŚ IMIĘ I NAZWISKO: KLASA: GRUPA A 1. Na dwie różne powierzchnie światło pada pod tym samym kątem. Po odbiciu od powierzchni I promienie świetlne nadal są równoległe względem
Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych
Synteza i obróbka obrazu Tekstury Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych Tekstura Tekstura (texture) obraz rastrowy (mapa bitowa, bitmap) nakładany na
użytkownika 1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania
1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania 6 Część czwarta dokumentacja techniczna i dokumentacja użytkownika
Przekształcanie wykresów.
Sławomir Jemielity Przekształcanie wykresów. Pokażemy tu, jak zmiana we wzorze funkcji wpływa na wygląd jej wykresu. A. Mamy wykres funkcji f(). Jak będzie wyglądał wykres f ( ) + a, a stała? ( ) f ( )
GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu
GRAKO: ŚWIATŁO I CIENIE Metody oświetlania Metody cieniowania Przykłady OŚWIETLENIE: elementy istotne w projektowaniu Rozumienie fizyki światła w realnym świecie Rozumienie procesu percepcji światła Opracowanie
Tworzenie i wykorzystanie usług sieciowych
Ćwiczenie 14 Temat: Tworzenie i wykorzystanie usług sieciowych Cel ćwiczenia: W trakcie ćwiczenia student zapozna się z procedurą tworzenia usługi sieciowej w technologii ASP.NET oraz nauczy się tworzyć
Zastosowanie CP-grafów do generacji siatek
Zastosowanie CP-grafów do generacji siatek 1 Cel zajęć Celem zajęć jest praktyczne zaznajomienie się z pojęciem CP-grafu i gramatyk grafowych, przy pomocy których można je tworzyć i nimi manipulować. Jako
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.
1 Wektory Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem. 1.1 Dodawanie wektorów graficzne i algebraiczne. Graficzne - metoda równoległoboku. Sprowadzamy wektory
Śledzenie promieni w grafice komputerowej
Dariusz Sawicki Śledzenie promieni w grafice komputerowej Warszawa 2011 Spis treści Rozdział 1. Wprowadzenie....... 6 1.1. Śledzenie promieni a grafika realistyczna... 6 1.2. Krótka historia śledzenia
C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Parametryzacja obrazu na potrzeby algorytmów decyzyjnych
Parametryzacja obrazu na potrzeby algorytmów decyzyjnych Piotr Dalka Wprowadzenie Z reguły nie stosuje się podawania na wejście algorytmów decyzyjnych bezpośrednio wartości pikseli obrazu Obraz jest przekształcany
Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl
System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy