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

les vecteurs

the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 10:01:43

Salut !
Voila j'ai une petite question concernent les vecteurs dans le domaines du jeux video, en faite ma question peut paraitre bête mais en gros comment on met en place un vecteur ? Comment on definis son sens , sa norme ...
Fin voila si vous pouviez m'éclairer sur le sujet avec des exemples parceque j'en trouve pas
Merci !

the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 10:57:39

Ah oui d'accord mais au niveau de la norme du vecteur c'est la distance séparent les deux point ducoup ?

Kurotsuchi93
Kurotsuchi93
Niveau 3
14 décembre 2015 à 11:06:40

Un vecteur en 2D ça peut simplement être 2 coordonnées (3 coordonnées en 3D, etc...), par exemple pour un vecteur AB, on a :
x = xB - xA
y = yB - yA
Son sens c'est de A vers B
Sa direction c'est la droite AB
Sa norme c'est racine(X*X + Y*Y)

La forme sous laquelle tu le code dépend ce que tu veux en faire. Je trouve la forme avec 2 coordonnées beaucoup plus simple pour faire des additions de vecteurs, multiplier un vecteur par un scalaire, etc

the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 11:10:34

Je comprend bien le principe mais c'est au niveau de la norme comment le programme comprend que c'est par exemple la racine(X*X+Y*Y) et je compte faire des petit essais avec p5js qui possède une fonction pour les vecteur mais je vois pas trop ou ils veulent en venir avec leur exemple http://p5js.org/reference/#/p5.Vector
En tout cas merci pour vos lumières !

Kurotsuchi93
Kurotsuchi93
Niveau 3
14 décembre 2015 à 11:26:06

J'avoue que j'ai du mal à comprendre ce que tu veux faire...
Si tu comptes créer toi-même ta classe Vecteur, il va falloir que tu implémentes toutes les méthodes qui vont bien à l'intérieur, et notamment la norme :

public double norm()
{
     return sqrt(x*x + y*y);
}

Tu pourras ensuite faire v.norm() pour avoir la norme de v.

the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 11:29:18

Si par exemple je veux faire rouler une balle il faut appliquer une force sous forme de vecteur non ?

Kurotsuchi93
Kurotsuchi93
Niveau 3
14 décembre 2015 à 11:37:53

Oui.
Si tu connais les coordonnées du centre de ta balle, pour la faire rouler, il suffit d'ajouter à ces coordonnées les coordonnées de ton vecteur déplacement (si on oublie les histoires de deltaTime):

balle.centre.x += deplacement.x;
balle.centre.y += deplacement.y;

et faire ça à chaque tour de ta boucle d'update.

the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 11:45:53

Delta.time c'est une histoire de temps , de moyenne du temps non ? Car avec la méthode que tu me propose au dessus si je veux rajouter un cote "réaliste" il faut rajouter un lien avec le temps , le poid de l'objet et donc la gravite non ?

the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 12:22:50

Ca tombe bien je suis en term S ^^ vous auriez pas un petit exemple de code qui utilise des vecteurs assez simplement ?

Kurotsuchi93
Kurotsuchi93
Niveau 3
14 décembre 2015 à 12:27:27

Tu codes ton propre moteur physique ? Si tu codes sur unity par exemple, la physique est déjà implémentée pour toi, il suffit d'appliquer la force.
Si tu gères tout toi même, et que tu veux un effet réaliste, oui il faut que tu ajoutes le vecteur gravité, et le vecteur de réaction normale du support sur lequel la balle se trouve (et les frottements si tu veux encore plus de réalisme).

Le deltaTime est surtout là pour gérer le fait que les appels à update() dépendent de la vitesse du PC sur lequel le programme tourne. Si ton programme tourne à 60FPS sur un pc, l'update sera appelé 2 fois plus que sur un pc où ton programme tourne à 30FPS. Conséquence : la balle roulera plus vite sur le pc plus puissant.
En multipliant par deltaTime (qui est le temps passé entre 2 appels à updates) à chaque fois, ta balle roulera à la même vitesse sur les 2 pc.

balle.centre.x += (deplacement.x + gravite.x + rnormale.x) * deltaTime;
balle.centre.y += (deplacement.y + gravite.y + rnormale.y) * deltaTime;
the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 12:41:50

Ba je pense pas coder mon moteur physique tout de suite , mais j'aimerais comprendre comment ça fonctionne avant d'utiliser des fonction tout faite , dans ton exemple déplacement et gravite son des vecteur ? Comment tu les declare ? Sinon je pense utiliser p5js avec javascript , merci en tout cas

Kurotsuchi93
Kurotsuchi93
Niveau 3
14 décembre 2015 à 12:47:18

Oui ce sont des vecteurs, tu les déclare comme n'importe quel objet:

Vector gravite = new Vector(0,9.81f); // Gravité terrestre : environ 9.81 m/s 
Vector deplacement = new Vector(1f,0); // Si tu veux par exemple un déplacement à droite
the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 12:55:05

Whiteapplex:
Merci pour l'exemple je suppose que en javascript je remplace les struc par des objet ?
Kurotsushi : Le f représente quoi ?

Helliot_Ness
Helliot_Ness
Niveau 5
14 décembre 2015 à 13:53:09

Bonjour,
J'espère que white ne va pas dire que suis une traduct de Google.

Il y a environ un an, avec un gars qui était très très incorporé au groupe d'ici et qui semblait souhaiter partager son savoir, je lui ai proposé de monter un site, avec du contenu pour éventuellement ce type de questions.

La vie étant ainsi faite, il n'a pas réellement donné suite finalement (c'est dommage).

Quoi qu'il en soit, dans ce concept j'avais attaqué le problème de la vulgarisation de la compréhension des vecteurs. Je n'ais pas donné suite à tout cela simplement que seul et sans partenaire cela ne m’intéresse pas.

Voici le lien des deux articles qu'a l'époque j'avais mis en ligne:
http://www.newbieunity.fr/tutoriels/comprendre-les-vecteurs/introduction/
http://www.newbieunity.fr/tutoriels/comprendre-les-vecteurs/un-peu-de-mathematiques/

Peut être cela réponds à ta question de base.

NB :
Je ne suis qu'un petit gars sans aucunes connaissances. Pour des question plus pointues, adresse toi aux personnes d'ici. Ce sont des masters.

Helliot_Ness
Helliot_Ness
Niveau 5
14 décembre 2015 à 14:27:50

Heu juste pour le fun...

Oui les struct sont des objets

Oui bien sur, mas il existe certaines nuances qu'il ne faut pas oublier surtout dans le dev de jeux vidéos (dès fois que l'on ai besoin d'optimisations).
Je vais pas développer les nuances extrêmes, je laisse aussi cela aux masters.

Kurotsuchi93
Kurotsuchi93
Niveau 3
14 décembre 2015 à 14:29:14

Laisse tomber le f, c'est juste que j'ai l'habitude de coder en Java. En javascript ça n'existe pas.

Helliot_Ness
Helliot_Ness
Niveau 5
14 décembre 2015 à 15:09:12

L'information du f n'a rien à voir avec l'aspect Java ou autre !!!
C'est simplement une bonne façoan de nommer une affectation dite de constante à autre chose en déterminant son type.
f ou F en général représente simplement que le littéral est un float dans le cas présent.
C'est une bonne pratique d'écrire son code comme cela.
Dans le milieu pro c'est même plus que conseillé et parfois plus qu'obligatoire.

Bon tout le monde n'est pas pro hein.

the_wrath
the_wrath
Niveau 5
14 décembre 2015 à 15:26:01

Quand tu fais new vecteur() tu créer un nouvel objet vecteur mais comment il est défini ?

Kurotsuchi93
Kurotsuchi93
Niveau 3
14 décembre 2015 à 15:49:54

@Helliot_Ness:
Le f permet de différencier un flottant d'un double, or en javascript ces deux notions n'existent pas, un nombre est un nombre. La notation f n'est donc pas définie en javascript. Il suffit de tester, le résultat de var a = 34.0f , c'est une erreur à l'interprétation.

@the_wrath
Dans ton cas, l'objet Vecteur sera ton p5.Vector, qui est défini dans p5.js

Helliot_Ness
Helliot_Ness
Niveau 5
14 décembre 2015 à 16:17:25

@Kurotsuchi93
Tu t'enterre mon garçon. C'est dommage

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