CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Intro synthèse d'image

DogGreen
DogGreen
Niveau 10
30 septembre 2007 à 00:24:25

Bonjour, en guise d´introduction à la synthèse d´image, je dois modéliser des objets 3D simple en utilisant Qt4+QGLViewer+OpenGL.

Et j´ai un petit problème pour faire un disque, plus particulièrement pour obtenir les sommets. Je me suis basé sur cet algo :
Pour une affichage composé de N sommets :

avec xc,yc coordonées du centre et R le rayon du disque.

x[o]=xc + R ;
y[o] = yc;
ds = N/2π;
for ( s=ds; s < 2π; s+= ds)
{
x[i]= x c + R cos(s);
y[i]= y c + R sin(s);
}
Seulement le résultat final ressemble à tout sauf à un disque. J´ai trouvé cette formule sur internet, mais je n´arrive pas à voir d´ou viens le problème, je soupsonne le : ds = N/2π comme étant mal initialisé. Mais je suis un peu pommé.

Merci de votre aide.

DogGreen
DogGreen
Niveau 10
30 septembre 2007 à 00:26:35

ouhla, désolé pour le copié collé raté :
correction :
y[o] = yc + R;
ds = N/(2*PI)

godrik
godrik
Niveau 30
30 septembre 2007 à 11:24:33

je crois que les fonctions de trigo sont en degré et pas en radian

DogGreen
DogGreen
Niveau 10
30 septembre 2007 à 12:25:42

Ok, je vérifierais, mais le problème vient aussi du pas de la boucle, le ds, l´initialisation à N/2pi me parait fausse, imaginons que je veuille 16 vertex, 16/2pi ne me permettra pas de calculer les 15 sommets dans la boucle..

Pseudo supprimé
Pseudo supprimé 30 septembre 2007 à 15:29:44

Je confirme, en OpenGL, on bosse en degrés, pas en radians.

Fvirtman
Fvirtman
Niveau 10
30 septembre 2007 à 19:19:33

Les fonctions OpenGL prennent des degrés en parametre, par contre, si tu veux précalculer des données avant, et utilises les fonctions cos et sin de math.h, la il faut considérer des radians.

ta formule peut etre un peu compactée (le traitement particulier de x[0] et y[0] au début peuvent etre injectés dans le for :

ds = N/(2*PI);
for (s=0;s<2*PI;s+=ds)
{
x[i]= x c + R cos(s);
y[i]= y c + R sin(s);
}

travaille bien avec des float ou des double : le piege serait que tu aies mis "s" ou "ds" comme des int par exemple.
Sinon, essaie de dumper tes points calculés, et des les tracer sur une feuille, juste pour voir ce que tu as. Mais le calcul est correct : c´est la définition paramétrique d´un cercle.

DogGreen
DogGreen
Niveau 10
30 septembre 2007 à 20:11:41

Merci beaucoup pour vos réponses, je vais tester & vérifier tout ça.

dnob700
dnob700
Niveau 10
30 septembre 2007 à 22:34:09

pour le pas, je verrais plutôt quelque chose comme (2*PI)/N ça me semble plus logique. (en faisant N pas, tu parcours 2*PI radian).

dnob700
dnob700
Niveau 10
30 septembre 2007 à 22:34:49

par contre, même si openGL bosse en degré (je n´en sais rien), je pense que les fonction trigo de math.h (les sin et cos normaux) sont en radian.

deepblue
deepblue
Niveau 16
30 septembre 2007 à 23:01:16

Si sin(90) != 1, alors c´est en degré, sinon, c´est en radian

Fvirtman
Fvirtman
Niveau 10
30 septembre 2007 à 23:37:58

Ah oui, Dnob a raison : pour le pas, c´est bien (2*PI)/N qu´il faut prendre pour etre logique :)

Pseudo supprimé
Pseudo supprimé 01 octobre 2007 à 00:00:45

Celà dit, mieux vaut éviter les != et les == avec les flottants :)

DogGreen
DogGreen
Niveau 10
01 octobre 2007 à 13:39:14

Voila j´ai terminé. merci, pour vos réponses, le problème venait effectivement du pas : c´est bien 2*PI/N et d´une autre erreur d´étourderie : pour un disque constitué de 16 sommets, je n´avais prévu que 12 triangles pour le dessiner. Donc évidement il me manquait un quart de disque....

Fvirtman
Fvirtman
Niveau 10
01 octobre 2007 à 13:50:20

GG alors :ok:
On attend que tu nous questionnes sur les autres formes a modéliser :

- spheres
- tores
- surface NURBS

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment