Några tips om hur plotta ut pixlar i en sinkurva på x-axeln, +/- 15px på y och ca 25 px mellan maxpunkterna. Helst ingen trög loop utan mera pang på röbetan... eftersom den är tänkt att hamna i en nästlad for-slinga från början. Det är DOS och Borlands BGI som gäller.. vers BC5.02.
Mig veterligen måste du använda en loop.
Fast om du är smart kan du ju använda dig av symmetrin hos en sinuskurva och genom spegling och transformering minska antalet operationer.
På så sätt behöver du bara "räkna ut" 1/4. :p
Och jag är tveksam när det gäller speglingar och transformationer. Dessa funktioner är förmodligen mer krävande än en vanlig "rita-sinuskurva-funktion" och då tjänar du inget på det.
------------------
- Erik Hellström -
- Datalogiprogrammet - MDH -
- http://3d.burken.nu -
PhOrPhEr: naturligvis är det mer krävande... att koda (inte svårt dock). Ur effektivitets synvinkel är det bra mycket snabbare än att rita ut hela sinuskurvan. Snabba funktioner gillar vi! :p
Har du börjat med koden själv eller står du på ruta 1?
lite pseudo-kod då jag inte vet hur dina ritfunktioner ser ut (plotPixel finns i GLUT - du får anv motsv).
plotPixel(x, y, r, g, b) - röd, grön, blå - anger färgen på pixeln.
Detta bör skapa en sinuskurva y=sinx i intervallet -pi till pi (radianer används).
Varje varv plottar ut 4 punkter genom att utnyttja symmetrin. På detta sätt behöver du bara räkna ut y för 0 < x < pi/2, dvs en 4:e del av kurvan.
bra va :)
Nej jag står inte i ruta ett. Men jag behövde baka in en sinkurva i programmet. Körde en annan variant med nästlade forloopar som drog ned tempot rejält. Ska testa med koden här. :)
OBS! koden förutsätter att du kan skapa ett koordinatsystem.... vill du enbart använda dig av pixelpositioner får du ange en referensepunkt. Utifrån denna får du räkna ut absolutbeloppet och addera/subtrahera istället för att köra med x, -x, y, -y.
Anledningen till att det går slött är att operationen kör med decimaltal. Det kräver mer av processorn. Ju färre decimaltalsoperationer du utför desto snabbare går det. Kan du komma på en algoritm som "ungefär" ger en sinuskurva men enbart använder sig av heltalsoperationer kan du speeda upp koden ytterligare! :p
D3VaST8D >>
Jorå, det börjar likna nåt... grejen är att hela programmet vart lite komplext med itererande funktioner m.m.., så jag ska sätta mig ikväll och snygga till koden lite och kolla igenom heltalsberäkningar kontra decimalt. Förmodligen kan jag styra upp det som du sa. Tack!
Nej, men funktioner som jag loopat... dvs anropar x-antal ggr istället för att nästla alltför många forsatser och upprepa kod.
Programmet skulle vara i c-syntax och med BGI så det blir som det blir... :)