Luento 2: Viivan toteutus

Samankaltaiset tiedostot
Luento 3: Tulostusprimitiivien toteutus

Sisältö. Luento 2: Tulostusprimitiivien toteutus GRAAFISTEN PRIMITIIVIEN TOTEUTUS. Piirtäminen rasteriruudulle. Suoran viivan vaatimukset

Grafiikka 205. Tässä luvussa käsitellään geometriaa ja graafisia kohteita. Mukana on pääosin alkeisoperaatioita.

Luento 6: Tulostusprimitiivien toteutus

Luento 2: 2D Katselu. Sisältö

Luento 2: Tulostusprimitiivit

origo III neljännes D

Luento 3: 2D Katselu. Sisältö

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 1: Parametrisoidut käyrät ja kaarenpituus


Numeeriset menetelmät

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

2 Pistejoukko koordinaatistossa

Käy vastaamassa kyselyyn kurssin pedanet-sivulla (TÄRKEÄ ensi vuotta ajatellen) Kurssin suorittaminen ja arviointi: vähintään 50 tehtävää tehtynä

Fr ( ) Fxyz (,, ), täytyy integroida:

Tekijä Pitkä matematiikka

Tekijä Pitkä matematiikka Pisteen (x, y) etäisyys pisteestä (0, 2) on ( x 0) Pisteen (x, y) etäisyys x-akselista, eli suorasta y = 0 on y.

Juuri Kertaus Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Paraabeli suuntaisia suoria.

= ( F dx F dy F dz).

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Muutoksen arviointi differentiaalin avulla

4.1 Kaksi pistettä määrää suoran

x 5 15 x 25 10x 40 11x x y 36 y sijoitus jompaankumpaan yhtälöön : b)

Vanhoja koetehtäviä. Analyyttinen geometria 2016

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 1: Parametrisoidut käyrät ja kaarenpituus

Ellipsit, hyperbelit ja paraabelit vinossa

Luento 6: Geometrinen mallinnus

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Differentiaaliyhtälöryhmä

Yleistä vektoreista GeoGebralla

4. Esittäminen ja visualisointi (renderöinti)

Differentiaali- ja integraalilaskenta 2 (CHEM) MS-A0207 Hakula/Vuojamo Kurssitentti, 12.2, 2018, arvosteluperusteet

x (t) = 2t ja y (t) = 3t 2 x (t) + + y (t) Lasketaan pari käyrän arvoa ja hahmotellaan kuvaaja: A 2 A 1

Avaruuden kolme sellaista pistettä, jotka eivät sijaitse samalla suoralla, määräävät

Ratkaisut vuosien tehtäviin

811120P Diskreetit rakenteet

Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon

Tekijä Pitkä matematiikka Suoran pisteitä ovat esimerkiksi ( 5, 2), ( 2,1), (1, 0), (4, 1) ja ( 11, 4).

Geogebra -koulutus. Ohjelmistojen pedagoginen hyödyntäminen

2016/07/05 08:58 1/12 Shortcut Menut

Differentiaali- ja integraalilaskenta 3 Harjoitus 4/ Syksy 2017

Ota tämä paperi mukaan, merkkaa siihen omat vastauksesi ja tarkista oikeat vastaukset klo 11:30 jälkeen osoitteesta

811120P Diskreetit rakenteet

Fortran 90/95. + sopii erityisesti numeriikkaan:

3.1 Väliarvolause. Funktion kasvaminen ja väheneminen

(b) = x cos x 1 ( cos x)dx. = x cos x + cos xdx. = sin x x cos x + C, C R.

b) Määritä/Laske (ei tarvitse tehdä määritelmän kautta). (2p)

DIFFERENTIAALIYHTÄLÖN NUMEERISESTA RATKAISEMISESTA 2 1,5 0,5 -0,5 -1,5-2

Q 17.1/24.1/74/1. GEOLOGINEN TUTKIMUSLAITOS Geofysiikan osasto HP 9820 A-ohjelmaseloste. T. Jokinen SLINGRAM-PROFIILI

Ympyrä 1/6 Sisältö ESITIEDOT: käyrä, kulma, piste, suora

Kaikkiin tehtäviin ratkaisujen välivaiheet näkyviin! Lue tehtävänannot huolellisesti. Tee pisteytysruudukko B-osion konseptin yläreunaan!

Tekijä Pitkä matematiikka b) Kuvasta nähdään, että b = i 4 j. c) Käytetään a- ja b-kohtien tuloksia ja muokataan lauseketta.

MAA7 Kurssikoe Jussi Tyni Tee B-osion konseptiin pisteytysruudukko! Kaikkiin tehtäviin välivaiheet näkyviin! Laske huolellisesti!

Vektoriarvoiset funktiot Vektoriarvoisen funktion jatkuvuus ja derivoituvuus

Ensimmäisen asteen polynomifunktio

yleisessä muodossa x y ax by c 0. 6p

Laskuharjoitus 2A ( ) Aihepiiri: Raja-arvot etc. Adams & Essex, 8th Edition, Chapter 12. z = f(x, 0) = x2 a z = f(0, y) = 02 a 2 + y2

Tarkennamme geneeristä painamiskorotusalgoritmia

Toisen asteen käyrien ja pintojen geometriaa Ympyrän ja pallon ominaisuuksia

Aluksi Kahden muuttujan lineaarinen yhtälö

Viikon aiheet. Funktion lineaarinen approksimointi

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla (Opettajan ohje)

13. Taylorin polynomi; funktioiden approksimoinnista. Muodosta viidennen asteen Taylorin polynomi kehityskeskuksena origo funktiolle

MS-A0305 Differentiaali- ja integraalilaskenta 3 Luento 6: Vektorikentän viivaintegraali

Osoita, että kaikki paraabelit ovat yhdenmuotoisia etsimällä skaalauskuvaus, joka vie paraabelin y = ax 2 paraabelille y = bx 2. VASTAUS: , b = 2 2

Luennoitsija: Jukka Maalampi Luennot: , ma 9-10 ja ke Luentoja ei ole viikoilla 15 (pääsiäisviikko).

Analyysi I (sivuaineopiskelijoille)

(d) f (x,y,z) = x2 y. (d)

3 Suorat ja tasot. 3.1 Suora. Tässä luvussa käsitellään avaruuksien R 2 ja R 3 suoria ja tasoja vektoreiden näkökulmasta.

Numeerinen integrointi

Ratkaisuja, Tehtävät

Nopeus, kiihtyvyys ja liikemäärä Vektorit

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

y=-3x+2 y=2x-3 y=3x+2 x = = 6

Tällaisessa tapauksessa on usein luontevaa samaistaa (u,v)-taso (x,y)-tason kanssa, jolloin tason parametriesitys on *** VEKTORIANALYYSI.

MAA15 Vektorilaskennan jatkokurssi, tehtävämoniste

Algoritmit 2. Luento 13 Ti Timo Männikkö

4. Käyrän lokaaleja ominaisuuksia

Fysiikka ei kerro lopullisia totuuksia. Jokin uusi havainto voi vaatia muuttamaan teorioita.

MS-A0305 Differentiaali- ja integraalilaskenta 3 Luento 1: Moniulotteiset integraalit

Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 180 Päivitetty Pyramidi 4 Luku Ensimmäinen julkaistu versio

SISÄLTÖ Venymän käsite Liukuman käsite Venymä ja liukuma lujuusopin sovelluksissa

Pyramidi 3 Analyyttinen geometria tehtävien ratkaisut sivu 139 Päivitetty a) 402 Suplementtikulmille on voimassa

1. a) b) Nollakohdat: 20 = c) a b a b = + ( a b)( a + b) Derivaatan kuvaajan numero. 1 f x x x g x x x x. 3. a)

Matematiikan tukikurssi

l 1 2l + 1, c) 100 l=0 AB 3AC ja AB AC sekä vektoreiden AB ja

Numeeriset menetelmät TIEA381. Luento 2. Kirsi Valjus. Jyväskylän yliopisto. Luento 2 () Numeeriset menetelmät / 39

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

5.3 Suoran ja toisen asteen käyrän yhteiset pisteet

Oppimateriaali oppilaalle ja opettajalle : GeoGebra oppilaan työkaluna ylioppilaskirjoituksissa 2016 versio 0.8

l 1 2l + 1, c) 100 l=0

Piste ja jana koordinaatistossa

RATKAISUT a + b 2c = a + b 2 ab = ( a ) 2 2 ab + ( b ) 2 = ( a b ) 2 > 0, koska a b oletuksen perusteella. Väite on todistettu.

Numeerinen integrointi

Aloita Ratkaise Pisteytä se itse Merkitse pisteet saanut riittävästi pisteitä voit siirtyä seuraavaan osioon ei ole riittävästi

Transkriptio:

Tietokonegrafiikan perusteet T-111.4300 3 op Luento : Viivan toteutus Lauri Savioja 11/07 Primitiivien toteutus / 1 GRAAFISTEN PRIMITIIVIEN TOTEUTUS HUOM! Oletuksena on XY-koordinaatisto Suorien viivojen piirtäminen Malli piirturikynällä piirtämisestä Kynä on aina jossakin (CP = Current Position) Inkrementaaliset alkeisoperaatiot: PenUp / PenDown CP' = CP + (±1, ±1)-> 8 eri askelta Primitiivien toteutus / 1

Piirtäminen rasteriruudulle Alkeisoperaationa: SetPixel ( x, y, color ) Pisteet piirrettävissä missä järjestyksessä hyvänsä Koordinaatit suhteellisina määritellyn rasterin origoon nähden Primitiivien toteutus / 3 Laskennallisia vaatimuksia Nopea, eli kokonaislukuja yhteen- ja vähennyslaskuja shiftejä Hitaita asioita kertolaskut reaaliluvut kirjastofunktiot, esim. trigonometriset operaatiot Primitiivien toteutus / 4

Suoran viivan vaatimukset Suora Tasapaksu (tasainen intensiteetti) Portaaton Täsmällinen alku ja loppu Intensiteetti riippumaton pituudesta ja kulmakertoimesta Primitiivien toteutus / 5 Algoritmi suoran piirtämiseksi Suoran yhtälö y=ax+b Alkupiste (x o,y o ), loppupiste (x 1,y 1 ) Primitiivien toteutus / 6 3

DDA (Digital Differential Analyzer) - algoritmi Periaate: pisteitä suoralla voidaan laskea esim. janan päätepisteiden (p 1, p ) avulla esitetystä parametrimuodosta p(t) = p 1 + t * p = p 1 + t * (p - p 1 ) ; t [0,1] x(t) = x 1 + t * X y(t) = y 1 + t * Y = y 1 + m * (t * X) ; m = Y / X eli antamalla t:lle sopivia arvoja ja pyöristämällä lasketut koordinaatit. Primitiivien toteutus / 7 DDA (jatkuu) raa an voiman menetelmä : iteroidaan t-parametria riittävän pienin askelin, jotta kaikki "janalla olevat" (so. lähellä olevat) pisteet tulevat käytyä läpi. DDA : iteroidaan yksikköaskelin sitä koordinaattia, jonka siirtymä on suurempi, esim. x increment = ±1 ja y increment = m, kun m < 1. heikkouksia: jakolasku alussa liukuluvut, pyöristys joka pisteessä Primitiivien toteutus / 8 4

Viivanpiirto SIGGRAPH opetusdiat Primitiivien toteutus / 9 Bresenham PASCAL-kielisenä: procedure bres_line (x1, y1, x, y : integer); var dx, dy, x, y, x_end, p, const1,const : integer; dx := abs(x1 - x); dy := abs(y1 - y); p := * dy - dx; const1 := * dy; const := * (dy - dx); if x1 > x then { if x1 > x } x := x; y := y; x_end := x1 end else { if x1 <= x } x := x1; y := y1; x_end := x set_pixel(x, y); while x < x_end do x := x + 1; if p < 0 then p := p + const1 else y := y + 1; p := p + const set_pixel(x, y) end Primitiivien toteutus / 10 5

Bresenham (jatkuu) algoritmin edut: ei lainkaan jakolaskua eikä liukulukuja kertolasku vain tekijällä (= bin.luvun sivuttaissiirto) Huom. algoritmi johdettu nousevalle suoralle, dx>0, m < 1. Jos dx < 0, vaihdetaan päätepisteet (p 1, p ) keskenään, tai päivitetään x-arvoa -1:n askelin laskevalle suoralle, -1 < m < 0, vaihdetaan y:n askeleeksi -1 Jos m > 1, vaihdetaan x:n ja y:n roolit keskenään. Primitiivien toteutus / 11 KÄYRÄT VIIVAT suorien ohella tarvitaan usein myös käyriä: käyrät (ympyrän, ellipsin, parabelin kaaret) splinit (myöhemmin tällä kurssilla) periaatteessa mikä hyvänsä käyrä voidaan approksimoida murtoviivalla, mutta tehokkaampaa on yleensä tuottaa käyrän pisteet suoraan sen määritelmästä DDA-algoritmi ja Bresenhamin muunnelma siitä ovat helposti muunnettavissa monille käyrille sopiviksi, mutta on varottava äärellisestä differenssiaskeleesta aiheutuvaa virhettä. Primitiivien toteutus / 1 6

Bresenhamin ympyränpiirtoalgoritmi symmetrian ansiosta riittää tarkastella vain kahdeksasosaa koko ympyrästä; loput pisteet saadaan vaihtamalla x:n ja y:n rooleja ja etumerkkejä (olettaen, että keskipiste on origossa): -x,y x,y -y,x y,x -y,-x y,-x -x,-y x,-y piirtäminen alkaa pisteestä (0,r) ja päättyy, kun x=y. Primitiivien toteutus / 13 Ympyrä (jatkuu) Tarkastellaan askelta i, jossa ollaan viimeksi piirretty piste (x i, y i ), ja seuraavaksi on pääteltävä kumpi pisteistä, (x i +1, y i ) vai (x i +1, y i 1), on lähempänä todellista käyrän pistettä (x i +1, y exact ) : y exact yi y i-1 d1 d xi xi+1 Primitiivien toteutus / 14 7

Ympyrä (jatkuu) ympyrän yhtälöstä y = r x saadaan: y exact = r (x i + 1), jota voidaan verrata vaihtoehtoisiin pisteisiin: d 1 = y i y exact = y i r + (x i + 1), d = y exact (y i - 1) = r (x i + 1) (y i - 1) p i = d 1 d = (x i + 1) + y i + (y i - 1) r valitaan se piste, jonka etäisyys oikeasta on pienempi, eli jos parametri p i < 0, niin valitaan arvo y i, muuten arvo (y i - 1). Primitiivien toteutus / 15 Ympyrä (jatkuu) Parametrin p arvo seuraavassa pisteessä (x i +1, y i+1 ) voidaan laskea iteratiivisesti edellisessä pisteessä lasketusta arvosta. Edellä laskettua lauseketta muokkaamalla saadaan: p i+1 = [(x i +1) + 1] + y i+1 + (y i+1-1) r = p i + 4x i + 6 + (y i +1 - y i ) (y i+1 - y i ) = p i + 4x i + 6, jos y i+1 = y i = p i + 4x i + 6 4y i + 4, jos y i+1 = y i + 1 aloituspisteessä (0, r) lauseke on: p 1 = 3 r. Primitiivien toteutus / 16 8

Ympyräkoodi procedure bres_circle (x_center, y_center, radius : integer); var p, x, y : integer; procedure plot_circle_points; { 8 symmetric positions } set_pixel(x_center + x, y_center + y); set_pixel(x_center - x, y_center + y); set_pixel(x_center + x, y_center - y); set_pixel(x_center - x, y_center - y); set_pixel(x_center + y, y_center + x); set_pixel(x_center - y, y_center + x); set_pixel(x_center + y, y_center - x); set_pixel(x_center - y, y_center - x) Primitiivien toteutus / 17 Ympyräkoodi (jatkuu) { bres_circle } x := 0; y := radius; p := 3 - * radius; while x < y do plot_circle_points; if p < 0 then p := p + 4 * x + 6 else p := p + 4 * (x - y) + 10; y := y - 1; x := x + 1; end if x = y then plot_circle_points; Primitiivien toteutus / 18 9