Se connecter

Informatique

Programmation

Sujet : [Python et Processing]
1
Speykious
Niveau 9
19 juin 2017 à 10:57:33

:salut:

Quelqu'un connait Processing?
Si vous connaissez pas, c'est un logiciel très intéressant.
On peut coder en Java principalement, mais on peut rajouter un mode Python et ça marche très bien.

Ce que je veux faire, c'est créer un Moteur Physique en 2D (Quel gros nom, dis-donc... Comme ma b*** :hap:)
Bon, plus sérieusement, j'ai fait énormément de recherches sur le sujet, et j'ai trouvé plusieurs moteurs physiques comme Farseer ou Box2D, et c'est ce dernier que j'ai le mieux réussi à utiliser. De plus, il y a une implémentation de Box2D pour Processing, mais c'est en Java et je veux coder en Python!!! :diable:
Jusqu'à présent, avec le mode python et la librairie Box2DForProcessing, j'ai réussi à créer un monde Box2D. Mais impossiblement impossible de créer un BodyDef() ou un PolygonShape()...
Ce qui en gros veut dire que je n'arrive pas à faire en mode Python ce que l'on peut faire en Java avec la librairie Box2DForProcessing.
Bin sûr il y a PyBox2D mais ça ne marche pas avec Processing, d'autant plus qu'une bonne partie (voire tout) est écrit en C++ :-(

Je veux donc créer mon propre Moteur Physique 2D, du plus basique au plus complexe, et j'entend bien arriver progressivement vers un résultat très proche de CECI:
https://www.myphysicslab.com/
Ambitieux, non? :hap:

Dans le prochain message, je vais écrire ce que je sais et ce dont j'ai besoin. A dans quelques minutes

[[sticker:p/1kkn]]
Speykious
Niveau 9
19 juin 2017 à 11:15:43

Dans mon fichier Engine2D, j'ai une class Body qui a comme propriété:
p, un vecteur pour la position,
v, un vecteur pour la vitesse (vélocité),
f, un vecteur pour la force,
a, un nombre pour l'angle,
w, un nombre pour la vitesse angulaire.

Ce sera donc un tout petit point qui correspondra au centre d'une forme comme un polygone, un rectangle ou plus simplement un cercle.
D'ailleurs, les cercles sont la première forme que j'ai travaillé.
J'ai donc créé une deuxième class CircleShape qui a les propriétés d'un cercle: on va dire juste le rayon, car c'est la seule chose dont on aie besoin dans un cercle... :hap:
Mais il y a un problème lié aux collisions. Dans mon système de collisions le plus avancé, ça marche très bien, mais dès qu'il y a plus d'1 point de collision, je suis perdu!! Les cercles vibrent entre eux sans pour autant se rentrer dedans, ou alors ils le font à une lenteur pas possible.
En plus, les cercles sont sans friction, ne tournent pas... :pf:

Ce que j'aimerai faire, c'est repartir de zéro, car j'aimerais pouvoir faire la même chose avec des rectangles et des polygones... Il faut qu'ils puissent tourner, qu'on puisse appliquer une force dessus et pas forcément au centre, ce qui applique que la force appliquée peut faire tourner le polygone... Enfin bref, faire un Moteur Physique 2D similaire à MyPhysicsLab... Assurément, la tache sera compliquée à enlever :hap:

Première chose, j'aimerai avoir des calculs compréhensibles pour:

  1. appliquer une force à un rectangle, puis à un polygone, à un point qui se trouve dans la forme mais pas en son centre de gravité: comment répartir la force (comment va-t-il tourner et se déplacer vers cette force en même temps? Moitié-moitié?) Je me demande si je suis clair... :hap:
  1. faire la même chose pour les collisions: comment gérer la collision de deux rectangles? De plus, comme on fait une simulation sur ordi, on fait du calcul image par image, donc les polygones vont forcément se rentrer dedans à un moment donné... Il faudra faire un calcul pour les remettre au point de collision exact... C'est compliquééééééééé :malade:

Voilà. Ce sont mes premières demandes.
Et si vous savez ce que c'est, faites en sortes que vos explications soient compréhensibles, parce qu'avec toutes les recherches que j'ai faites, impossible de comprendre... :-(

:merci: d'avance

[[sticker:p/1kkn]]
LGV
Niveau 21
19 juin 2017 à 12:01:23

C'est compliquééééééééé

Oui. C'est complique. Des bouquins entiers ont ete ecrits sur le sujet : maths discretes, physique numerique, collisions continues, etc. Impossible a resumer en qq instructions claires, car le sujet EST complique.

Speykious
Niveau 9
20 juin 2017 à 15:14:29

Eeeeeh ben, c'est déjà pas rassurant :malade:

Speykious
Niveau 9
27 juin 2017 à 12:44:00

J'ai trouvé la solution!! :fete: En fait, je me disais que la librairie Fisica, c'était Box2D en moins bien. Mais en fait c'est pareil, en plus facile, exclusivement pour processing et je peux coder en Python !!
Génial, hein? :-d

En tout cas, je vous conseille le logiciel Processing, parce que c'est un moteur graphique très facile à apprendre, qui a beaucoup de potentiel et qui vous offre des possibilités infinies de codage. Vous pouvez évidemment créer des petits jeux avec! :ok:
En tout cas, :desole: pour avoir posté un topic que j'ai résolu tout seul (ce genre de topic est relou à mes yeux :hum:) mais au moins je me rattrape en essayant de vous intéresser un peu à Processing qui est un superbe logiciel! :hap:
Sur ce, :merci:

[[sticker:p/1kki]]
1
Sujet : [Python et Processing]
   Retour haut de page
Consulter la version web de cette page