| Voorbeeld programma's en broncode |
© 2010 Hein Pragt
Op deze pagina kunt een overzicht vinden van alle broncode en programmeer voorbeelden van Hein Pragt.
Een klassiek stukje grafische code is een starfield demo. Het wekt de suggestie dat u door de ruimte vliegt en de sterren op
u afkomen en u aan alle zijden passeren. Sterren die ver weg zijn zullen kleiner zijn en ze moeten groter worden als ze de
camera (onze kijk positie) naderen. Voor de helderheid geldt hetzelfde, sterren die verder van ons vandaan zijn hebben een
minder heldere kleur dan sterren die dichtbij zijn. Dit wekt de indruk dat de sterren echt op ons afkomen.
De broncode met uitleg in C voor Win32 kunt u vinden op de volgende pagina: Starfield code
|
Nog een klassiek stukje grafische code is een 3d tunnel met circels demo. Het wekt de suggestie dat u in een tunnel
van circels kijkt die op u afkomen en u aan alle zijden passeren.
Voor de punten gebruiken we een structure waarin we de eigenschappen van de punt opslaan. Dat zijn de x, y en z
positie als float, een 3d coordinaat in de wiskunde, waarmee we de positie horizontaal, verticaal en in de diepte opslaan.
Een groter z positie betekend dus dat het voorwerp ver van ons verwijderd is (in dit wiskundig model) en de grootte
en helderheid kunnen we dan ook berekenen uit de (z) afstand. Verder slaan we deze vector (x,y,z) ook op als int
waarbij ze omgerekend zijn naar een punt op het beeldscherm. Dit is eenvoudig te doen als we toch aan het rekenen
zijn en scheelt weer tijd als we de punten willen schrijven in het venster.
Deze demo verschilt ten opzichte van het starfield, dat hier ook een leuke demo van wat toegepaste wiskunde in
zit. We gebruiken de sinus en cosinus functie, zetten radialen om in graden en voeren een extra transformatie uit zodat
lijkt alsof de tunnel een sinusvirmige beweging maakt in de ruimte. In de init routine laat ik zien hoe je met behulp van een
sinus en cosinus vrij eenvoudig een circel kunt maken.
De broncode met uitleg in C voor Win32 kunt u vinden op de volgende pagina: Tunnel code
|
Een heel leuk grafisch effect dat u vaak tegenkomt in demo's is gegenereerd vuur. Ik zal in het kort proberen uit te leggen
hoe we vuur kunnen maken. Eerst hebben we een kleurenpalet nodig dat van donkerblauw naar donkerrood overloopt en dan van
rood naar geel en daarna van geel naar wit. Dit zijn de kleuren waar het vuur uit gaat bestaan. We hebben 255 kleuren en
0 is het meest donker en 255 is het meest licht. We maken een scherm buffer en die vullen we eerst met alleen maar 0. We
zetten onder in de laatste regel om de beurt 255 of 0 met een random functie. Daarna gaan we het scherm omhoog scrollen
waarbij we van een punt het gemiddelde kleurwaarde nemen met de omliggende punten. Dit zetten we als kleurwaarde in het
nieuw pixel en dit blijven we herhalen. De pixels op hogere lijnen zullen dus steeds meer gedempt gaan worden en
aangezien ons kleurenpalet mooi de kleuren van vuur bevat zal het een redelijk realistisch beeld van vuur opleveren.
De broncode met uitleg in C voor Win32 kunt u vinden op de volgende pagina: Vuur code
|
Last update: 06-04-2010
|