Redigerer
Digital differential analyzer
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
'''Digital differential analyzer''' ('''DDA''') er innen [[datagrafikk]] et stykke maskinvare eller programvare for å lineær-interpolere variabler over et [[Intervall (matematikk)|interval]] mellom et start- og sluttpunkt. DDA brukes for å rasterisere linjer, triangler og polygoner. I sin enkleste form vil DDA-algoritmen virke ved å interpolere verdier i intervallet ved å regne ut for følgende ligninger for hver x<sub>i</sub>: x<sub>i</sub> = x<sub>i−1</sub>+1/m, y<sub>i</sub> = y<sub>i−1</sub> + m, hvor Δx = x<sub>end</sub> − x<sub>start</sub> og Δy = y<sub>end</sub> − y<sub>start</sub> og m = Δy/Δx. == Ytelse == DDA-algoritmen kan implementeres ved bruk av enten [[Flyttall|flyttalls]]- eller [[heltall]]saritmetikk. Flyttallsmetoden krever en addisjon- og en avrundingsoperasjon per interpolerte verdi (for eksempel koordinatene x og y, dybde, fargekomponent og så videre) og resultat. Denne metoden er bare effektiv når en FPU med raske addisjons- og avrundingsoperasjoner er tilgjengelig. Ved bruk av heltallsaritmetikk og et fast antall siffer etter komma, kreves to addisjoner per syklus. Hvis tallet bak komma blir mer enn én, kreves en ekstra addisjon og subtraksjon. Sannsynligheten for at dette skjer er proporsjonal med raten til m i de interpolerte start- og sluttverdiene. DDA passer bra for å bli implementert i maskinvaren, og kan benytte seg av parallellutførelse (pipelining) for å maksimere ytelsen. Helningen til linja ''m'' kan beskrives på følgende måte: : <math>m = \frac{y_{end} -y_{start}}{x_{end}-x_{start}}</math> == Algoritmen == DDA starter med å regne ut dy og dx, og velger den minste av disse til fortsettelsen. Linja blir så regnet ut for hver heltallsverdi mellom start- og sluttpunktet langs enten x- eller y-aksen. Den utregnede verdien i hvert punkt blir så rundet til nærmeste heltall for den andre koordinaten. Gitt en linje med positiv helning på mindre enn en, vil man regne ut y-verdier for hver x (dx=1) slik som : <math>y_{k+1} = y_k + m</math> Hvor k er en heltallsverdi som starter fra 0, for det første punktet, og øker med én til sluttpunktet er nådd. y-verdien rundes så av til nærmeste heltall for å få en nøyaktig pixelverdi på skjermen. For linjer med helning høyere enn én, bytter man om på x og y, det vil si at man regner ut x-verdier og bruker dy=1 : <math>x_{k+1} = x_k + \frac{1}{m}</math> Liknende kalkulasjoner gjøres for å regne ut pikselverdier langs en linje med negativ helning. == Se også == * [[Bresenhams linjealgoritme]] som er en algoritme for å tegne linjer. * [[Xiaolin Wus linjealgoritme]] som er en algoritme for [[anti-aliasing]] == Kilder == * Alan Watt: ''3D Computer Graphics'', 3rd edition 2000, p. 184 (Rasterizing edges). ISBN 0-201-39855-9 {{Autoritetsdata}} [[Kategori:Datagrafikk]] [[Kategori:Algoritmer]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon