Hello tout le monde,
Bon je suis plutot Java mais j'avais envie d'essayer de jouer un peu avec OpenGL et je pige pas pourquoi il vaut mieux utiliser les sin et cos pour utiliser un cercle (j'ai quelques lacunes en math ), et que la formule (x-j)^2 + (y-k)^2 = r^2 me dessine plutot une élipse. Voilà le code qui m'embete:
Faites pas attention à la propreté du code
(Pour dessiner une sphere qui décrit un cercle)
Code :
- float CircleGetY(float x, float radius)
- {
- return radius - x*x;
- }
- GLvoid DrawPoint(GLvoid)
- {
- if(i < -0.990f && i > -1.010f)
- {
- increment = true;
- decrement = false;
- }
- if(i > 0.990f && i < 1.010f)
- {
- increment = false;
- decrement = true;
- }
- if(decrement)
- i -= 0.1f;
- else
- i += 0.1f;
- glTranslatef(i, decrement?CircleGetY(i, 1.0f):-1*CircleGetY(i, 1.0f), -3.0f);
- Draw();
- }
- GLvoid Draw(GLvoid)
- {
- GLUquadricObj *q;
- q = gluNewQuadric();
- gluSphere(q, 0.01f, 32, 16);
- }
|
(juste pour tracer un cercle, récupéré sur gamedev)
Code :
- const float TWOPI = 6.283185;
- void DrawCircle(float radius, int slices)
- {
- float step = TWOPI/slices;
- glBegin(GL_LINE_LOOP);
- for(float angle = 0.0f; angle < TWOPI; angle+=step)
- glVertex2f(cos(angle) * radius, sin(angle) * radius);
- glEnd();
- }
|
Donc le 1er code me donne une trajectoire élliptique avec des angles assez visibles à gauche et à droite, et le deuxième me donne un cercle parfait.
Pourquoi ?
Merci
Message édité par WhatDe le 08-02-2004 à 10:26:18