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

[3D + C++] Dessiner une sphère.

dnob700
dnob700
Niveau 10
10 octobre 2005 à 23:01:42

Je fait un petit programme mathématique qui consiste à résoudre de manière aprochée le problème dit des dictateurs ennemis : il faut placer à la surface d´une sphère un nombre de points donné de manière à ce que la distance minimum entre eux soit la plus grande possible.
Bon, ça c´est mon problème.

La question que je vous pose c´est : comment me conseilleriez vous d´afficher une sortie graphique à l´écran. J´ai déjà pensé à dessiner tout simplement des arrètes entres les points, ce n´est pas évident (enfin c´est simple, mais c´est beaucoup de calcul) car il faut chercher quels sont les points qui sont proches les uns des autres, mais ensuite, c´est juste quelques conversions pour projeter les points sur l´écran et tracer des segments.

Mais sinon, quelles sont les techniques pour rendre une sphère de façons réaliste.
Sachant que je n´utilise pas de moteurs 3D.
Je fait mes sorties graphiques avec ma lib couplée si nécessaire pour faire des dégradés avec GDI+ donc je peut tracer des segments, des points, des cercles et colorier des surfaces d´une couleurs unis ou avec un dégradé le long d´un chemin quelconque, mais pas grand chose de plus.

Voila, merci pour vos suggestion.

Lapintade
Lapintade
Niveau 30
10 octobre 2005 à 23:13:47

"enfin c´est simple, mais c´est beaucoup de calcul"

Pas autant de calcul que ca. Une formule de projection, c´est simplement :

Xproj = X / (Z+DistEcran)
Yproj = Y / (Z+DistEcran)

Ensuite suffit de tracers des segments entre tes points.

dnob700
dnob700
Niveau 10
10 octobre 2005 à 23:38:08

Le "beaucoup de calcul" consistent en fait en la recherche des segments qui méritent d´être tracé.

Si j´ai 1000 ou 2000 points, je ne peut tracer que les segments qui relie les points suffisament proche entre eux sinon il n´y aurait que des trait partout.

Par contre ta formule est interessante au sens que c´est une aproche que je n´ai pas essayé. Jusqu´à là je n´avais que des projection orthogonales (sans point de fuite)
c´est à dire que j´utilisais :
Xproj=X
Yproj=Y
Après avoir si nécessaire calculé ddes X et Y qui tiennent compte d´une éventuelle rotation du repère de l´espace par rapport à un repère de référence.

LGV
LGV
Niveau 28
11 octobre 2005 à 01:40:36

pour ce genre de choses, une approche courante robuste consiste a unwrapper le set de donnees, puis a determiner la triangulation de Delaunay. Apres on peut affiner selon le but exact, mais cette premiere etape consiste la base de bcp d´algo dans ce type la (i.e. lapped textures).
Bien sur bcp d´autres approches sont possibles.

A noter que la projection proposee ^^^ est anamorphique, au passage

godrik
godrik
Niveau 30
11 octobre 2005 à 14:36:17

2000 points ca ne fait jamais que 4 millions de calcul de distance...
sinon, tu peux toujours discrétiser ton espace.

Vengeur41
Vengeur41
Niveau 10
11 octobre 2005 à 18:52:01

"la distance entre eux soit le minimum possible"

Là faut qu´on m´explique :-(

Vengeur41
Vengeur41
Niveau 10
11 octobre 2005 à 18:56:59

"la distance minmum entre eux soit la plus grande possible"

petite correction...
mais je demande toujours à ce qu´on m´explique :-d

dnob700
dnob700
Niveau 10
11 octobre 2005 à 21:52:06

C´est à dire qu´il faut les placer (les points) de manière à ce qu´il soit tous le plus loins les uns des autres possible.

LGV : merci, mais disont que je recherche quelque chose de pas trop technique. Car la représentation graphique n´est qu´une petite fonctionnalité de mon logiciel.

En fait je recherchais juste des astuces de bas-niveau pour m´aider à rendre la sphère de façons réaliste.

dnob700
dnob700
Niveau 10
11 octobre 2005 à 22:41:06

Bon, j´ai implémenté une solution assez simple : rendre tout simplement les points dans une couleurs différente selon leurs profondeurs (pour l´instant, sans tracé les segments) et laissé en permanence à l´utilisateur la possibilité de modifier le point de vue, ce qui permet de donner une impression de 3D.

Par contre je me demandais si c´était compliqué à programmer (en nombre de ligne disont) avec une lib graphique standard, par ce qu´avec la mienne il me faut moins de 30 lignes de codes pour tout gérer (la fenêtres graphique, le passage à la 2D depuis les coordonnées 3D, les rotation, le dessin, la gestion de la souris pour faire tourner la caméra, etc). Et ça me semblait pas beaucoup. Tout ça pour dire que (en toute modestie ...) je pense que ma lib n´est pas mal du totu pour ce genre de projet bien spécifique (même si là ça n´est pas un jeu, ça pourrait l´être (un petit truc)).

Pour ceux qui ça interesse (avec un bout de code sources pour montrer comment je gère la sortie graphique :
http://jvstats.free.fr/temp/Particules.zip

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