Termosta vaan kaikille!
Juu, et olis sellanen ongelma, et voisko joku tehä minulle pienen esimerkin. Eli, esimerkin tulisi näyttää miten voin tehdä lämpenemis pisteen? Eli mitä lähempänä pikselit ovat esim pistettä 50,50 eli x = 50 y = 50. niin sitä keltaisemmaksi se menee ja mitä kauempana sitä punaisemmaksi ne menee..Eli luonnollisesti kauempana tulisi olla kylmempää kuin itse pisteessä.
Mitä rajapintaa tai kirjastoa käyttäen tämä esimerkki pitäisi tehdä?
En lupaa silti tekeväni tätä. (mutta saatan hyvinkin tehdä jos jaksan, kun ei tässä mitään muutakaan ole nyt käsillä)
Ota minustakin nyt sitten selvää :p
Joo :D.. Eli tämä tulisi toteuttaa SDL:llä.
No nyt on sitten puuhaa kädet täynnä, mutta sitenhän tuo tapahtuu, että mitä kauempana värjättävä pikseli on hotspotista (50,50 tai mikä ikinä se onkaan), niin sen mukaan sitten sen tarvittavan RGB-arvon valitset.
Suoraa koodia en lähde tekemään, mutta tässä yksinkertainen periaate tuon tekemiseen
Kahden pisteen välinen etäisyys on helppo laskea Pythagoraan lauseella: pisteen (x,y) etäisyys pisteestä (50,50) on:
r^2 = (x-50)^2 + (y-50)^2
Neliöjuuren ottaminen tuottaa tarkan etäisyyden, mutta tässä tapauksessa voit käyttää myös etäisyyden neliötä jolloin säästyt hitaalta neliöjuurioperaatiolta.
Nyt kun tiedät pisteen etäisyyden, sinun on generoitava jotenkin pisteen väri. Täysin keltaisen värin RGB-värikoodi on 255,255,0 (eli punaista ja vihreää täydet eikä sinistä lainkaan). Punaisen värin taas 255,0,0. Eli sinun on siis vain etäisyyden pienentyessä pienennettävä vihreän värin osuutta pikselin RGB-värikoodissa.
Hoh, ei varsinaisesti mitään aiheeseen liittyvää, mutta innostuin tästä niin että tein ASCII-version javalla. Hyvää harjoitusta tämmöiselle sunnuntaikoodarille :)
Itselleni tuli hieman erilainen menettely mieleen:
Pikselille P on määritetty väriksi C, johon hotspot H ei riittävän etäisyyden (r) vuoksi vaikuta (vaikutusalue [T_hot,T_cold]). Kun P saapuu vaikutusalueelle, sen jokaista kanavaa Rc,Gc,Bc muutetaan samalla delta-arvolla, ettei harmaasävy muutu.
Eli
channel = max(Rc, Gc, Bc) delta = ((Tcold - r)/(Tcold - Thot))*(255 - channel)) BlitPixel( x, y, Rc+delta, Gc+delta, Bc+delta)
"Kuva":
H--Thot---------(P)-----Tcold-------
Mitä merkki ^ meinaa lausekkeessa r^2 = (x-50)^2 + (y-50)^2
^ merkki tarkoittaa potenssiin korotusta
(esim. x^2 = x*x, x^3 = x*x*x)
Ja kannattaa muistaa, että C:ssä ^ tarkoittaa xoria.
C:n kanssa potenssi lasketaan vaikka näin:
#include <math.h> int main() { int luku; luku = pow(2, 5); // 2 ^ 5 return 0; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.