Perusteita

Käytetään yleensä oikeakätistä koordinaatistoa. Siinä z-akselin voi ajatella suuntautuvan kohti katsojaa. Koordinaatit ovat skalaareja eli tavallisia lukuja.

Pisteet ja vektorit esitetään tässä yleensä lihavoituna, esim. piste p ja vektori v. Vektori täytyy tarvittaessa erottaa pisteestä asiayhteyden avulla, koska ne merkitään tässä oleellisesti samalla tavalla.

Pisteen ja vektorin välillä ei käytännössä välttämättä ole ratkaisevaa eroa, sillä piste voidaan myös käsittää origosta ko. pisteeseen ulottuvaksi vektoriksi.

Esimerkiksi kolmiulotteisen pisteen ja vektorin koordinaatit (x, y, z) esitetään tässä yleensä pystyesityksenä näin

[ x ]
[ y ]
[ z ]

Vektori voidaan ymmärtää kahden pisteen erotukseksi, loppupiste - alkupiste. Vektorin suunta on alkupisteestä p loppupisteeseen q.

v = q - p

        [ x' ]   [ x ]   [ x' - x ]
q - p = [ y' ] - [ y ] = [ y' - y ]
        [ z' ]   [ z ]   [ z' - z ]

Pisteiden välisen erotuksen vähennyslasku suoritetaan siis koordinaateittain.

Vektoreiden laskutoimituksia

Vektorit v ja u voidaan laskea yhteen ja vähentää toisistaan komponenteittain.

        [ x' ]   [ x ]   [ x' + x ]
v + u = [ y' ] + [ y ] = [ y' + y ]
        [ z' ]   [ z ]   [ z' + z ]

        [ x' ]   [ x ]   [ x' - x ]
v - u = [ y' ] - [ y ] = [ y' - y ]
        [ z' ]   [ z ]   [ z' - z ]

Vektorin u normi eli pituus |u| on komponenttien (x, y, z) neliöiden summan neliöjuuri.

|u| = √¯ (x² + y² + z²) 

Normalisoidun vektorin pituus on tasan 1. Vektori normalisoidaan jakamalla se pituudellaan. Kukin komponentti jaetaan alkuperäisen vektorin pituudella.

un = u / |u|

Vektorin u vastavektori -u osoittaa päinvastaiseen suuntaan ja sen koordinaateilla on päinvastaiset merkit, mutta pituus on sama.

     [ -x ]
-u = [ -y ] 
     [ -z ]  

Kun vektori u kerrotaan skalaarilla c niin kaikki vektorin koordinaatit kerrotaan tuolla skalaarilla. Vektorin pituus kasvaa, mutta suunta säilyy samana.

        [ c*x ]
c * u = [ c*y ] 
        [ c*z ]  

Pistetulo

Vektoreiden pistetulo (·) on skalaari, eikä vektori. Sillä on siis suuruus, mutta ei suuntaa. Pistetulo voidaan määritellä esim. kahdessa tai kolmessa ulottuvuudessa.

Pistetulo saadaan kertomalla vektoreiden komponentit keskenään ja laskemalla tulot yhteen. Pistetulo on kertomisen suunnasta riippumaton ; v · u = u · v.

                [ x ]   [ x' ]   
v · u = u · v = [ y ] · [ y' ] = xx' + yy' + zz'
                [ z ]   [ z' ]   

Vaihtoehtoisesti pistetulo voidaan laskea trigonometrisesti, vektoreiden v ja u pituuksien ja niiden välisen kulman θ avulla

v · u = |v| |u| cos θ

Trigonometrinen tulkinta osoittaa selvästi että pistetulo on nolla jos vektorit ovat kohtisuorassa toisiaan vasten. Pistetulon arvo on suurimmillaan |v| |u| kun vektorit ovat yhdensuuntaisia. Jos vektoreiden välinen kulma on yli 90° niin pistetulo on negatiivinen, saavuttaen negatiivisimman arvonsa kun vektorit ovat vastakkaissuuntaisia, eli niiden välinen kulma on 180°. Vektoreiden välinen kulma θ voidaan ratkaista jos pistetulo tunnetaan

θ = arccos ( (v · u) / (|v| |u|) )

Pistetulon sovelluksia

Jos vektori u on yksikkövektori (pituus |u| = 1 tasan) niin vektorin v pistetulo u:n kanssa on v:n projektio u:n suunnassa.

Jos u ei ole yksikkövektori, on pistetulo lisäksi jaettava u:n pituudella |u|


Vektorin pituus voidaan vaihtoehtoisesti laskea muodostamalla vektorin pistetulo itsensä kanssa. Koska vektori tietenkin on samansuuntainen itsensä kanssa, niin vektori pistetulo itsensä kanssa on vektorin pituuden neliö. Näin ollen vektorin pituus saadaan tuon pistetulon neliöjuurena.

v · v = |v| |v| = |v|²
|v| = √¯ ( v · v )

Ristitulo

Vektoreiden ristitulo eli vektoritulo on todellakin vektori, eli sillä on sekä suuruus että suunta. Ristitulo on olemassa vain kolmessa ulottuvuudessa.

Ristitulo voidaan vaihtoehtoisesti käsittää kuvan mukaisesti vektoreiden v ja u määräämän suunnikkaan pinta-alaksi.

Kahden vektorin ristitulo (×) tuottaa tuloksena kolmannen vektorin, joka on kohtisuorassa kumpaakin alkuperäistä vektoria vasten. Tulosvektorin pituus on skalaari

| v × u | = |v| |u| sin θ

Kulma θ on vektoreiden välinen kulma. Ristitulon pituus on nolla kun vektorit ovat yhdensuuntaiset ja maksimissaan kun vektorit ovat kohtisuorassa toisiaan vasten.

Komponenteittain esitettynä vektoreiden v ja u ristitulo (×) on vektori

        [ x ]   [ x' ]   [ yz' - zy' ]
v × u = [ y ] × [ y' ] = [ zx' - xz' ]
        [ z ]   [ z' ]   [ xy' - yx' ]

Ristitulo ei ole vaihdannainen, joten on tarkkaan huomattava mikä on kertoja ja mikä kerrottava.

u × v = -( v × u )


Kaksiulotteinen ristitulo

Matemaattisesti kaksiulotteinen ristitulo on omituisuus jota kuitenkin voidaan käyttää hyväksi tietokonegrafiikassa.

Kaksiulotteinen ristitulo (×2D) on 2D-vektoreiden välinen operaatio jonka tulos on skalaari.

         [ x ]     [ x' ]
v ×2D u =       ×2D        = xy' - yx'
         [ y ]     [ y' ]

Tulos on vastaava kuin oikean 3-ulotteisen ristitulon z -komponentti.

2D-vektorit voidaan tulkita 3D-avaruuden vektoreiksi jotka sijaitsevat xy-tasolla niin että niiden z-komponentti on nolla.

Kerrottavien vektoreiden keskinäinen suunta näkyy tuloksen etumerkistä. 2D-ristitulo on positiivinen kun kerrottava vektori u on vastapäivään kertovaan vektoriin v nähden. Voisi myös sanoa että vektoria v täytyisi kiertää alle 180° vastapäivään että sen saisi yhdensuuntaiseksi vektorin u kanssa.

Tällä perusteella voidaan tehokkaasti ratkaista kääntymissuunta tasolla. Kuljettaessa tasolla pisteestä p pisteeseen q ja edelleen pisteeseen r on käännös keskimmäisessä pisteessä q oikealle jos (r - p) ×2D (q - p) > 0 eli positiivinen. Jos arvo on nolla, ei käännytä, vaan mennään suoraan.


Suora viiva

En ryhdy halkomaan hiuksia ja erottelemaan esim. suoria, säteitä ja viivasegmenttejä toisistaan. Omaksun sen primitiivisen näkemyksen että 'viiva' on jonkin pituinen suora viiva.

Pisteiden p ja q kautta kulkeva viiva olkoon vektorin v = q - p suuntainen. Kaikki tuon viivan pisteet x toteuttavat viivan yhtälön jollakin parametrin t arvolla

x = p + t v

Kaksiulotteinen suora voidaan esittää myös pisteen r ja suoralle kohtisuoran normaalivektorin N avulla. Suoraan kuuluvat ne pisteet x joiden erotusvektori suoran pisteestä r on kohtisuorassa normaalia vasten. Kohtisuoruuden kriteerinä on vektoreiden pistetulon (·) arvo nolla.

( x - r ) · N = 0
x · N - r · N = 0

Kaksiulotteisen suoran pisteen x koordinaateille (x, y) saadaan pistetulon (·) avulla yhtälö kun merkitään C = - r · N ja normaalivektori esitetään komponenteittain N = [A, B]T

[ x ]   [ A ]
      ·       + C = 0
[ y ]   [ B ]

Ax + By + C = 0

Vakiot A ja B ovat siis suoran normaalivektorin N komponentit ja vakio C voidaan ratkaista pisteen r ja suoran normaalivektorin N pistetulona.


Matte3D

PÄÄSIVU