Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » turtle painting

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.04.2008, 20:15 Uhr
Fabian030



hi ihr da :-)
ich hab folgendes programm bisher geschrieben:


C++:
#include <iostream>
#include <GL/glut.h>
#include <stdlib.h>

float movex = 0.0;
float movey = 0.0;

static GLint dreieck;
static GLint paint = 0 ; //whether paint or not


void drawTriangle(void){
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glVertex3f(0.0f, 0.2f, 0.0f); // Top
glVertex3f(-0.2f,-0.2f, 0.0f); // Bottom Left
glVertex3f(0.2f,-0.2f, 0.0f); // Bottom Right
glEnd();
}

void init(void){
glClearColor(1.0, 1.0, 1.0, 1.0);
dreieck = glGenLists(1);
glNewList(dreieck, GL_COMPILE);
glEndList();

}


static void painting(void)
{
//static GLfloat red[4] = {3.0, 0.1, 0.0, 1.0};
//static GLfloat green[4] = {0.1, 3.0, 0.0, 1.0};
//static GLfloat blue[4] = {0.0, 0.0, 3.0, 1.0};

float x,y,z;
glBegin(GL_LINES);
glColor3f(3.0,0.0,0.0);
x = movex;
y = movey;
z = 0.0;
glVertex3f(x,y,z);
x += movex;
y += movey;
z = 0.0;
glVertex3f(x,y,z);
glEnd();

glutPostRedisplay();
}

static void onReshape(int width, int height){
float ar;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
ar=(float) width / (float) height;
glFrustum(-ar, ar, -1.0, 1.0, 0.5, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, 0.0, -1.0);
glutPostRedisplay();
}

static void onDisplay(void){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glColor3f(0.0, 0.0, 0.0);
drawTriangle();

glutSwapBuffers();
}

static void onIdle(void){
glutPostRedisplay();
}

static void onKeyPress(unsigned char key, int x, int y){
switch(key){
case ' ': // to pause/restart painting with the space bar
paint = !paint ;
if (paint) glutIdleFunc(painting) ;
else glutIdleFunc(NULL) ;
break ;

case 27: exit(0);
break;
}
}

static void onSpecialKey( int k, int x, int y)
{
switch ( k) {
case GLUT_KEY_UP:
glTranslatef(0.0, 0.1, 0.0);
//movey += 0.1;
break;
case GLUT_KEY_DOWN:
glTranslatef(0.0, -0.1, 0.0);
break;
case GLUT_KEY_LEFT:
glTranslatef(-0.1, 0.0, 0.0);
break;
case GLUT_KEY_RIGHT:
glTranslatef(0.1, 0.0, 0.0);
break;
default:
return;
}
glutPostRedisplay();
}


int main (int argc, char *argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize(640, 480);
glutCreateWindow("Test");
init();
glutReshapeFunc(onReshape);
glutDisplayFunc(onDisplay);

glutSpecialFunc(onSpecialKey);
glutKeyboardFunc(onKeyPress);
glutIdleFunc(painting);
glutMainLoop();
return 0;
}





das ding zeichnet mir ein dreieck, dass ich in meinem canvas auf der x und y achse rumschieben kann
nun soll, wenn man die leertaste drückt, angefangen werden zu zeichen (ob vom mittelpunkt des dreiecks, oder einem seiner ecken is mir wurscht) - ein einfacher strich.
dabei soll der strich immer meiner bewegung des dreiecks folgen und solange gezeichnet werden, bis ich wieder die leertaste drücke.

ich bin schon recht stolz auf mich, soweit gekommen zu sein.
aber ich hab keine ahnung, wie es ab da weitergehen könnte/sollte.
jemand ne idee? :-)

Dieser Post wurde am 16.04.2008 um 22:12 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.04.2008, 22:25 Uhr
Hans
Library Walker
(Operator)


Wie wäre es damit: Du definierst einen Punkt irgendwo im Dreieck, dessen Bewegungen Du ständig verfolgst. Wenn nun die Leertaste gedrückt wurde, setzt Du an der Stelle, wo sich der Punkt befindet einfach ein Pixel. Dadurch, das sich das Teil bewegt, sollte dann eine Art Linie entstehen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.04.2008, 16:18 Uhr
Oliver
S2-Pixelgeneral


Äh hab ich das richtig verstanden, dass du eine Art "Schweif" zeichnen willst, also eine Bahn, auf der das Dreieck geschoben wurde? Dann wäre es wohl besser, die einzelnen Punkte abzuspeichern und dann miteinander zu verbinden, falls du die Maus mal schnell bewegst.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: