marradi Skrevet 5. april 2008 Del Skrevet 5. april 2008 void drawEllipse(float xradius, float yradius){ for (int i=0; i < 360; i++) { //convert degrees into radians float degInRad = i*DEG2RAD; glVertex2f(cos(degInRad)*xradius,sin(degInRad)*yradius); } } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_LOOP); glColor3f(1.0, 1.0, 1.0); drawEllipse(0.1f,0.1f); glEnd(); glFlush(); } Her er koden min for å lage en ellipse. Det skal simuleres en ball som faller, treffer bakken og presses sammen for så og sprette opp igjen. Men problemet er å få ballen til å bevege seg? Jeg husker hvordan man gjorde slikt i Java, men skjønner ikke helt i c++. Lenke til kommentar
Mr.Garibaldi Skrevet 5. april 2008 Del Skrevet 5. april 2008 (endret) Kommandoen for å plassere noe er glTranslatef, og den vil la deg simulere bevegelse ved gjentatte kall. Eller var det noe annet du lurte på? Endret 5. april 2008 av Mr.Garibaldi Lenke til kommentar
marradi Skrevet 5. april 2008 Forfatter Del Skrevet 5. april 2008 Joda, men hvordan bruker du gltranslatef? En while-løkke? glTranslatef(0.0, 0.0, 0.0); drawEllipse(0.1f, 0.1f); Lenke til kommentar
Mr.Garibaldi Skrevet 5. april 2008 Del Skrevet 5. april 2008 La oss si du vil tegne ellipsen din 10 med 1 steg til høyre langs x-aksen mellom hver. for(int i = 1; i < 11; i++){ glTranslatef(1.0/i, 0, 0); drawEllipse(0.1, 0.1); } Lenke til kommentar
marradi Skrevet 5. april 2008 Forfatter Del Skrevet 5. april 2008 La oss si du vil tegne ellipsen din 10 med 1 steg til høyre langs x-aksen mellom hver. for(int i = 1; i < 11; i++){ glTranslatef(1.0/i, 0, 0); drawEllipse(0.1, 0.1); } Har prøvd det der, men står like fullt stille. Lenke til kommentar
tresko Skrevet 5. april 2008 Del Skrevet 5. april 2008 (endret) Kan være at du ikke har noen render loop, da vil bare koden din rase gjennom uten at du merker noe. Så hva med dette #define WINWIDTH 640 //eller noe bool keypressed = false; void renderLoop() { int i = 0; while(!keypressed) //keypressed må selvfølgelig detekteres en plass { glLoadIdentity(); glTranslatef((i++) % WINWIDTH, 0, 0); renderScene(); } } Endret 5. april 2008 av tresko Lenke til kommentar
Atypic Skrevet 5. april 2008 Del Skrevet 5. april 2008 Foreslår forøvrig studasstimene i tdt4195 for spørsmål relatert til øvingene :-) Lenke til kommentar
hishadow Skrevet 8. april 2008 Del Skrevet 8. april 2008 (endret) Foreslår forøvrig studasstimene i tdt4195 for spørsmål relatert til øvingene :-) Sånn går det når Java brukes som undervisningsspråk og C++ læres med et 2 timers kurs. Endret 8. april 2008 av hishadow Lenke til kommentar
MindProse Skrevet 12. april 2008 Del Skrevet 12. april 2008 Rart at enkelte høgskoler her i landet har byttet ut C++ med java (og til en grad C#). Personlig synes eg at C++ er det som burde ha vært grunnspråket på høgskolene. Jeg vurderer å slenge meg på ei skole innen spillprogrammering, hvor som helst bare det er en uber skole med C/C++ og ikke java/C#. Er det noen som har anbefalinger å gi? Går selv på en høgskole hvor de har byttet ut C++ med java, og min erfaring er at de datastudentene ikke helt får grepet om programmering (og i stedet blir god med nettbaserte løsninger). Lenke til kommentar
tresko Skrevet 12. april 2008 Del Skrevet 12. april 2008 (endret) Ja, er enig med deg der. Jeg ser ikke helt den hvorfor man skal prakke på Java til it-studenter, bortsett fra at studentene slipper bekymre seg for det underliggende. Mange faller også av lasset når man velger fag hvor man må bruke C/C++. Det merkelige synes jeg er at mange fysikk/matematikk studenter ender opp med å kunne mer C++ enn it studenter, iallfall innen numeriske metoder. Er nok mange som aldri kommer til å kode C/C++ etter endt utdanning. For min del er jeg glad at jeg fikk lært Java på universitetet, for det hadde jeg aldri giddet selv. Men kommer ikke til å få bruk for java på jobben iallfall. Anyways, Endret 12. april 2008 av tresko Lenke til kommentar
Quijote Skrevet 14. april 2008 Del Skrevet 14. april 2008 (endret) Føler for å hive meg på og uttrykke min enighet. No har NTNU i det minste gått i riktig retning og byttet ut java-faget TDT4100 (objektorientert programmering) med C++ faget TDT4102 (Prosedyre- og objektorientert programmering). Selv opplevde eg å først lære det meir enkle java-faget i løpet av eit halvt år, for så å måtte lære C (kompilering, pekere og minnehåndtering) i løpet av to uker i eit seinere fag. Skulle så inderlig ønske det var motsatt. Så @MindProse; støtter deg fullt opp. Og for trådens egentlige hensikt og skaper: glTranslate og glRotate er fundamentale funksjoner i openGl. Eg anbefaler på det sterkeste å ta ein titt på denne nettsiden http://www.videotutorialsrock.com/. Se helst igjennom den tekst-baserte løsningen om du vil pløye fort igjennom det, og om du sitter fast, så kan du få det servert på sølvfat gjennom videoene. Mmm, eg fann notatene mine fra da eg leika med openGl. glBegin(DRAW_TYPE); glPushMatrix(); //pushes current view coordinates glTranslatef(GLfloat x, GLfloat y, GLfloat z); //specify displacement glRotatef(GLfloat angle, GLfloat u, GLfloat v, GLfloat w); //rotates given angle through vector [u,v,w] ... create vertices to translate and rotate ... glPopMatrix(); //resumes previous coordinates glEnd(); Har du hatt om datastrukturen stack, så fungerer det litt på samme måte, i den forstand at du putter og popper translasjonsmatriser. glLoadIdentity(); //Reset the drawing perspective nullstiller forresten rotasjon- og translasjon-matrisen. .... hmmm.. no lurer du på kanskje korleis du animerer dette? vel... eg antar du har eit glutMainLoop()-kall i main-fuknsjonen din? I så fall kan du bruke glutTimerFunc-funksjonen før glutMainLoop. glutTimerFunc(GLint millisec, myFunction, parameter); //Calls function myFunction after given milliseconds Som da kaller funksjonen "myFunction" etter millisec millisekunder. Denne funksjonen kan se slik ut void myFunction(){ //... //do some alterations //... glutPostRedisplay(); // Tell glut that display has changed and that it should redraw screen with specified glutDisplayFunc-function. glutTimerFunc(milliseconds, myFunction, parameter); //calls itself, so that it repeats ad.inf. } Håper dette gir svarene du er ute etter Endret 14. april 2008 av Quijote Lenke til kommentar
Vipera Skrevet 14. april 2008 Del Skrevet 14. april 2008 Føler for å hive meg på og uttrykke min enighet. No har NTNU i det minste gått i riktig retning og byttet ut java-faget TDT4100 (objektorientert programmering) med C++ faget TDT4102 (Prosedyre- og objektorientert programmering). Selv opplevde eg å først lære det meir enkle java-faget i løpet av eit halvt år, for så å måtte lære C (kompilering, pekere og minnehåndtering) i løpet av to uker i eit seinere fag. Skulle så inderlig ønske det var motsatt. Byttet ut å byttet ut... På datateknikk er 4100 standar faget, men går ann å bytte til 4102 hvis man hvil. Lenke til kommentar
Blåbær Skrevet 14. april 2008 Del Skrevet 14. april 2008 Blir jo Offtopic men siden dere diskuterer det her, så anbefales det å lære c++ før man lærer seg java/c#? Tenker på å lære meg å programmere. Lenke til kommentar
Quijote Skrevet 14. april 2008 Del Skrevet 14. april 2008 (endret) Det spørs egentlig... begge er jo brukbare språk. Kommer ann på kva du har lyst til å ende opp med å lage og bruke det til. Men siden du er ute etter noe veldig grunnleggende så har det ikkje sååå mykje å si (if, while, else, for, main, switch, klasser, funksjoner, arv, polymorphisme, etc...) er slikt man kan lære og bruke i både C++, C# og java. Du kan altså komme godt ut uansett hva du velger, men diskusjonen her gikk meir ut på kva man får nytte av seinere, og personlig har eg aldri hatt bruk for java siden den gang vi lærte det... men til gjengjeld har vi brukt C og C++ støtt siden. Du kan lese kva andre har skrevet om saken ved å gjøre eit enkelt google-søk, langt klokere enn det eg kan gi deg http://www.computing.dcu.ie/~renaat/projects/cvjava.html Endret 14. april 2008 av Quijote Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå