|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Collision entre une "image" et une "line" [ Algorithme / Maths ] (nickotine1986)
Informations & options pour cette discussion
|
mardi 15 janvier 2008 à 18:01:09 |
Collision entre une "image" et une "line"

nickotine1986
|
Bonjour à tous et à toutes, Voilà, je recherche désespérement à détecter les collisions entre une image et une ligne. Je m'explique: j'ai deux controles sur une form, Image1 et Line1. Je peux déplacer mon image avec les flèches du clavier à droite, à gauche, en haut et en bas. La Line est fixe. Je ne trouve pas l'algo pour détecter si l'image1 touche la Line1. Quelqu'un pourrait il m'aider? Ce serait super sympa.  Merci d'avance, Dimitri.
|
|
|
|
mardi 15 janvier 2008 à 18:58:31 |
Re : Collision entre une "image" et une "line"

jmfmarques
|
Bonjour,
Si ta ligne est un contrôle et qu'elle n'est ni horizontale ni verticale :
Il te faudra en établir l'équation (y = ax + B) et vérifier qu'un point de coordonnées (x,y) des bords de ton image a des coordonnées telle que l'équation est vérifiée. (de l'algèbre, donc)
Tu peux par contre te montrer plus astucieux (puisque ta ligne est fixe) : en lieu et place d'un contrôle, utilise donc la méthode line pour dessiner cette ligne sur ta form, avec la couleur de ton choix. Il ne te restera alors plus qu'à vérifier à quel moment les coordonnées d'un des angles de ton image correspondent à cette couleur (utilisation de Point - voir ce mot dans ton aide en ligne).
|
|
|
|
mardi 15 janvier 2008 à 22:52:32 |
Re : Collision entre une "image" et une "line"

nickotine1986
|
Merci beaucoup pour ta réponse jmfmarques, qui m'a mit sur la voie. Cependant, j'ai encore quelques problèmes. Voici ma routine de détection de collision que m'a proposé mon frangin (plus calé que moi en maths), entre un contrôle "Command" (qui est bougé par les flèches) et une "line":
Diff = (Line1.Y1 - Line1.Y2) / (Line1.X1 - Line1.X2) commandx1 = Command1.Left commandy1 = Command1.Top Toto = Line1.Y1 - (Line1.X1 * Diff) moumoute = commandy1 * Diff + Toto If commandx1 < moumoute Then ATA = Command1.Top + Command1.Height ATB = Command1.Left + Command1.Width micheline = ATB * Diff + Toto If ATA > micheline Then ATA = micheline - 1 Command1.Top = ATA - Command1.Height End If End If
Cependant mon code fonctionne très mal. D'une part, je ne détecte que les collisions si le commandbutton est à gauche de la ligne et si la collision touche la line vers la droite. Ce qui n'est pas du tout pratique, puisque si je veux créer une barrière que le joueur peut contourner, avec ce code la gestion des collisions ne se fera que d'un seul côté de celle ci.
J'ai un niveau très faible en géométrie, ce qui me rend la tâche très difficile voire même impossible. Pourrais tu me donner un coup de main à ce niveau? Mon projet de jeu est bien avancé, mais là je péche par mon niveau en maths médiocre et du coup je ne peux plus avancer. De plus, je ne peux pas utiliser ta deuxième solution, car j'utilise des contrôles dynamiques d'une multitude de couleurs.
Ce qu'il faudrait, c'est que le commandbutton puisse contourner cette "barrière" (la line1) tout en étant bloqué lorsqu'il veut la franchir directement. Après je mettrais l'algo dans une fonction qui sera appelée lors des déplacements du joueur. Je n'enverrais que les positions du joueur (matérialisé par un contrôle image donc 4 positions left, top, left+width,top+height) et les 4 positions de la line en question.
Si tu peux et veux m'aider, ce serait très sympa de ta part. Je comprendrais si ça t'ennuye de donner du code brute, par soucis de ne pas mâcher le travail aux autres, mais ce n'est pas par fénéantise que je viens sur ce forum, mais bien parce que je suis bloqué au niveau mathématiques.
|
|
|
|
mercredi 16 janvier 2008 à 00:48:56 |
Re : Collision entre une "image" et une "line"

jmfmarques
|
Désolé, mais en traitant la chose par l'algèbre, d'une part, et en devant pouvoir à la fois déterminer une collission et contourner ta droite (ton mur, donc), il va te falloir une infinité de vérifications (une pour chacun des points de ton objet en mouvement, puisqu'un segment à 45 degrés, par exemple, peut avoir l'une de ses deux extrêmités pouvant toucher n'importe quel point du périmètre de l'objet se déplaçant).
L'équation d'une droite passant par deux points est l'une des choses les plus simples à faire.
Mais une infinité de vérifications :
1) ralentira considérablement ton appli 2) prendra un temps tel que le temps que le calcul soit terminé, l'objet aura déjà "enfoncé" ton mur ...
Tu es mal barré, là ...
|
|
|
|
mercredi 16 janvier 2008 à 13:35:16 |
Re : Collision entre une "image" et une "line"

nickotine1986
|
Merci encore. Dans ce cas, aurais tu une idée pour contourner ce problème? Je veux dire, sans utiliser de line, mais toujours avec l'image de la barrière qu'on ne doit pouvoir traverser ni d'un côté, ni de l'autre. L'idée de m'utiliser des couleurs, je doute que ça puisse fonctionner, car j'ai à peu près 500 images différentes, avec des couleurs parfois similaires voire identiques mais pas forçément de la même taille, ni forçément infranchissable. Surtout que comme j'utilise de la 2D isométrique, ça complique encore plus le truc.  Je comprends mieux pourquoi j'ai entendu dire sur ce forum que les collisions étaient ce qu'il y a de plus difficile à gérer dans la programmation d'un jeu !
|
|
|
|
mercredi 16 janvier 2008 à 13:36:34 |
Re : Collision entre une "image" et une "line"

nickotine1986
|
Merci encore. Dans ce cas, aurais tu une idée pour contourner ce problème? Je veux dire, sans utiliser de line, mais toujours avec l'image de la barrière qu'on ne doit pouvoir traverser ni d'un côté, ni de l'autre. L'idée de m'utiliser des couleurs, je doute que ça puisse fonctionner, car j'ai à peu près 500 images différentes, avec des couleurs parfois similaires voire identiques mais pas forçément de la même taille, ni forçément infranchissable. Surtout que comme j'utilise de la 2D isométrique, ça complique encore plus le truc.  Je comprends mieux pourquoi j'ai entendu dire sur ce forum que les collisions étaient ce qu'il y a de plus difficile à gérer dans la programmation d'un jeu !
|
|
|
|
mercredi 16 janvier 2008 à 13:37:19 |
Re : Collision entre une "image" et une "line"

nickotine1986
|
Merci encore. Dans ce cas, aurais tu une idée pour contourner ce problème? Je veux dire, sans utiliser de line, mais toujours avec l'image de la barrière qu'on ne doit pouvoir traverser ni d'un côté, ni de l'autre. L'idée de m'utiliser des couleurs, je doute que ça puisse fonctionner, car j'ai à peu près 500 images différentes, avec des couleurs parfois similaires voire identiques mais pas forçément de la même taille, ni forçément infranchissable. Surtout que comme j'utilise de la 2D isométrique, ça complique encore plus le truc.  Je comprends mieux pourquoi j'ai entendu dire sur ce forum que les collisions étaient ce qu'il y a de plus difficile à gérer dans la programmation d'un jeu !
|
|
|
|
dimanche 20 janvier 2008 à 20:48:53 |
Re : Collision entre une "image" et une "line"

nickotine1986
|
Je patauge, je patauge... J'ai eu une autre idée pour ma gestion de collision. Imaginons deux contrôles "image". L'un, qui a l'image d'une statue, a ses coutours noir. L'autre, le joueur, a ses contours bleus.
Serait il possible de programmer une routine qui repère une collision entre les pixels de l'Image du joueur et les pixels noirs de l'image de la statue?
|
|
|
Cette discussion est classé dans : image, détecter, line, image1, collision
Répondre à ce message
Sujets en rapport avec ce message
Toucher l'autre image a l'Aide d'un image [ par ATH|500| ]
Moi ce que je voudrais c'est que quand mon image1 touche au coté de mon image2 ben qu'il y ait un msgbox qui se passe...J'ai essayer mais ça marche pa
retourné une image mais pas dans une picturebox mais dans une image1.picture [ par toto ]
retourné une image mais pas dans une picturebox mais dans une image1.picture car la fonction paint picture n'a pas l'air de marcher (image1.paintictur
retourné une image non pas dans picturebox mais dans image1.picture [ par toto ]
retourné une image non pas dans picturebox mais dans image1.picture car j'ai tout essayer et paintpicture ne marche pas (image1.paintpicture et tout l
pb redimensionnement image [ par chris21 ]
Bonjour, je recherche une méthode pour redimensionner et sauvegarder une image, j'ai essayé ça: Image1.Picture.Width = Image1.Picture.Width / 2Image1.
Line et image [ par Sibelle07 ]
Salut tout le monde !j'aurais voulu savoir comment je pourrais faire par exemple Je crée un contrôle image et que quand l'image passe au dessus de cet
Redimensionnement d'image impossible [ par zoglub14 ]
Bonsoir à tous,J'essaie desesperement de redimensionner une image chargé dans une PictureBox, pour ensuite la sauvegarderPour cela j'ai crée une deuxi
Mon redimensionnement d'image marche mais pas à la bonne taille pourquoi ? [ par zoglub14 ]
Bonjour à tous,Données1 Picturebox en visible = False de taille 15479 x 10376 (Twips)1 control image en visible = true et stretch= false taille 5835 x
Charger mon image !!! devient fou [ par YabLeo ]
Salut j'aimerai savoir pourquoi qd je fais ça :Dim Image1 As Image Image1.Picture = LoadPicture("D:\Mes Documents\Mes images\Marsipio.bmp")ça plant
valeur de i dans image(i) [ par deubal ]
salut,je bosse sur vb6, mon projet est en lien avec access 2000. Dans une des forms de mon projet, j'ai 4 images qui 'saffichent. elle font partie d'u
Line dessus une image [ par Satirik ]
Voila je voudrais pouvoir mettre ma Line en premier plan et qu'elle soie au premier plan !! dessus une image et un usercontrol. Et je veux pas dessine
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|