Forum Le CBNA
Le Forum du CBNA a pour but de vous aider dans l'utilisation de GameMaker. Premier forum Francophone sous GameMaker, vous trouverez des .gmd, .gm6, .gmk, scripts, logiciels et d'autres ressources sur Le CBNA.
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S’enregistrerS’enregistrer  ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujet
 Collision entre rectangle et un triangleVoir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
CoDeAVE
Très bonne participation



Age : 17
Inscrit le : 06 Oct 2007
Messages : 148
Localisation : †[[Dans un monde réel]]†
 : ────────── :
Projet Actuel : Projet en C++
Avancement : 
5/1005/1005/1005/100 (5/100)

MessageSujet: Collision entre rectangle et un triangle   Mer 7 Mai - 18:21

Tout est dans le titre rire j'aurais besoin d'un script qui renvoie si un rectangle non orienté et un triangle sont en collision du style :



collision_rectangle_to_triangle(rect_x,rect_y,rect_w,rect_h,tri_x1,tri_y1,tri_x2,tri_y2,tri_x3,tri_y3)
Revenir en haut Aller en bas
M@d_Doc
Modérateur 'Programmation'



Age : 18
Inscrit le : 12 Fév 2005
Messages : 3761
Localisation : 47°44'8.04
 : ────────── :
Projet Actuel : trouver un contrat
Avancement : 
100/100100/100100/100 (100/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Mer 7 Mai - 18:35

aucune idée pour la partie triangle, mais un rectangle non orienté reviens à faire :

if (x<... && x>...) && (y<... && y>...)
{
...
}

Si la dedans il y a un point du triangle, c'est ok.
_________________
Revenir en haut Aller en bas
edi9999
Utilisateur confirmé: Rang ****



Age : 16
Inscrit le : 27 Jan 2006
Messages : 1445
Localisation : ben.. ici bien sur
 : ────────── :
Projet Actuel : Theatre flashy
Avancement : 
20/10020/10020/10020/100 (20/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Mer 7 Mai - 19:45

j ai pas vraiment d idée mais je vais essayer d inventer

Un point appartient à un triangle si :
-ce point se situe sous les droites d'équations de tous les segments ( ou au dessus)

donc d'abord tu commences par calculer les trois droites d'équations:

explication avec un dessin:

comme tu peux le voir tous les points qui sont blancs appartiennent au triangle sont blancs, autrement dit, les points qui sont à gauche de la droite verte, au dessus de la rouge et en dessous de la bleu.

On commence donc tout d'abord par calculer les droites d'équations:
[code] collision_rectangle_to_triangle(rect_x,rect_y,rect_w,rect_h,tri_x1,tri_y1,tri_x2,tri_y2,tri_x3,tri_y3)
d_eqp1=(triy2-triy1)/(trix2-trix1)
d_eqo1=triy1-d_eqp1*trix1
d_eqp2=(triy3-triy2)/(trix3-trix2)
d_eqo2=triy2-d_eqp2*trix2
d_eqp3=(triy1-triy3)/(trix1-trix3)
d_eqo1=triy3-d_eqp3*trix3



je continue après manger mais tu as déjà l'idée
_________________
I am an in the GM Quiz!

tuto gamemaker integral disponible sur mon site:
http://gameplay.c.la
Postez vos commentaires sur
http://cbna.forumactif.com/game-maker-f7/tuto-integral-debutant-intermediaire-comfirme-t7263.htm
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut' & 'Ablationer'



Age : 17
Inscrit le : 02 Aoû 2005
Messages : 5241
Localisation : **I move away from the mic to breathe in
 : ────────── :
Avancement : 
0/1000/1000/100 (0/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Jeu 8 Mai - 1:12

http://www.gmlscripts.com/script/geometric_functions
Ça peut servir pour se simplifier la vie.
_________________
PIS MANIAC PREND DES BAINS !
Revenir en haut Aller en bas
CoDeAVE
Très bonne participation



Age : 17
Inscrit le : 06 Oct 2007
Messages : 148
Localisation : †[[Dans un monde réel]]†
 : ────────── :
Projet Actuel : Projet en C++
Avancement : 
5/1005/1005/1005/100 (5/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Sam 10 Mai - 6:28

Merci beaucoup de vos réponses happy1 Mais le probleme c'est que le triangle peu etre petit et etre totalement dedans le triangle ou bien juste avoir un point dedans ou meme pas du tout O_oAlors il a plein de possibilité a véifier et comment faire cela performant question

désolé du temps de réponse j'avais oublier avoir posté ici rouge
Revenir en haut Aller en bas
edi9999
Utilisateur confirmé: Rang ****



Age : 16
Inscrit le : 27 Jan 2006
Messages : 1445
Localisation : ben.. ici bien sur
 : ────────── :
Projet Actuel : Theatre flashy
Avancement : 
20/10020/10020/10020/100 (20/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Sam 10 Mai - 9:52

Ben avec les scripts de gab666

tu utilises point_in_triangle(x1,y1,x2,y2,x3,y3,x4,y4)
en utilisant une boucle for

ça te donne:

collision=0
for(i=xrect;i<=xrect+wrect;i+=1)
{
for(j=yrect;j<=yrect+hrect;i+=1)
{
if (xtri1,ytri1,xtri2,ytri2,xtri3,ytri3,i,j)
{
collision=1
}
if collision=1
{
break;
}
}
if collision=1
{
break;
}
}
_________________
I am an in the GM Quiz!

tuto gamemaker integral disponible sur mon site:
http://gameplay.c.la
Postez vos commentaires sur
http://cbna.forumactif.com/game-maker-f7/tuto-integral-debutant-intermediaire-comfirme-t7263.htm
Revenir en haut Aller en bas
CoDeAVE
Très bonne participation



Age : 17
Inscrit le : 06 Oct 2007
Messages : 148
Localisation : †[[Dans un monde réel]]†
 : ────────── :
Projet Actuel : Projet en C++
Avancement : 
5/1005/1005/1005/100 (5/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Sam 10 Mai - 19:34

Non sa fonctionne pas de cette manière car le triangle peut etre en collision ak le rectangle sans nécésairemnt avoir de point a l'intérieur..
Revenir en haut Aller en bas
M@d_Doc
Modérateur 'Programmation'



Age : 18
Inscrit le : 12 Fév 2005
Messages : 3761
Localisation : 47°44'8.04
 : ────────── :
Projet Actuel : trouver un contrat
Avancement : 
100/100100/100100/100 (100/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Sam 10 Mai - 19:37

si le triangle est fixe, fait une collision avec un sprite de triangle gniah
_________________
Revenir en haut Aller en bas
CoDeAVE
Très bonne participation



Age : 17
Inscrit le : 06 Oct 2007
Messages : 148
Localisation : †[[Dans un monde réel]]†
 : ────────── :
Projet Actuel : Projet en C++
Avancement : 
5/1005/1005/1005/100 (5/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Dim 11 Mai - 1:00

Non le triangle n'est pas fixe et faire par pixel comme cela demande beaucoup de ressource je cherche le coté performance pour mon jeu.. happy1
Revenir en haut Aller en bas
master47
Utilisateur confirmé: Rang ****



Age : 16
Inscrit le : 16 Nov 2006
Messages : 1415
Localisation : Bruxelles, Belgique @ Louise Gallery
 : ────────── :
Projet Actuel : PacWars
Avancement : 
35/10035/10035/10035/100 (35/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Lun 12 Mai - 10:56

Patiente je te code cela Wink
_________________
O.Kaisin Devenez Fan

Ecouter ma dernière création musicale :
In the Sky
Revenir en haut Aller en bas
master47
Utilisateur confirmé: Rang ****



Age : 16
Inscrit le : 16 Nov 2006
Messages : 1415
Localisation : Bruxelles, Belgique @ Louise Gallery
 : ────────── :
Projet Actuel : PacWars
Avancement : 
35/10035/10035/10035/100 (35/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Lun 12 Mai - 12:06

Voila

Au début j'avais utilisé des équations mais c'était beaucoup trop lent :/

Donc j'ai utilisé une autre méthode, qui semble marcher correctement

Citation:

/* collision_rectangle_with_triangle(x1,y1,x2,y2,x3,y3,recx1,recy1,w,h) */

RecX0 = argument0
RecY0 = argument1
RecW = argument2
RecH = argument3

TriX0 = argument4
TriY0 = argument5
TriX1 = argument6
TriY1 = argument7
TriX2 = argument8
TriY2 = argument9

Rec = object_add()
draw_clear(0)
Spr = sprite_create_from_screen(0,0,RecW,RecH,1,0,0,0,0,0)
object_set_sprite(Rec,Spr)
object_set_visible(Rec,1)

ID = instance_create(RecX0,RecY0,Rec)

coll = false ;
while(true) {
if collision_line(TriX0,TriY0,TriX1,TriY1,ID,0,1) { coll = true; break; }
if collision_line(TriX1,TriY1,TriX2,TriY2,ID,0,1) { coll = true; break; }
if collision_line(TriX2,TriY2,TriX0,TriY0,ID,0,1) { coll = true; break; }
break ;
}

with(ID) { instance_destroy() }

sprite_delete(Spr);
object_delete(Rec);

return coll;

_________________
O.Kaisin Devenez Fan

Ecouter ma dernière création musicale :
In the Sky
Revenir en haut Aller en bas
CoDeAVE
Très bonne participation



Age : 17
Inscrit le : 06 Oct 2007
Messages : 148
Localisation : †[[Dans un monde réel]]†
 : ────────── :
Projet Actuel : Projet en C++
Avancement : 
5/1005/1005/1005/100 (5/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Mar 13 Mai - 5:49

triste Merci beaucoup de ton aide master47 mais le script va tres jusqu'au moment ou l'une des deux forme est a l'intérieur de l'autre snif et je cherchais plus un truc qui ne touche pas a l'affichage et qui ne créer pas d'autre instance ..
Revenir en haut Aller en bas
CoDeAVE
Très bonne participation



Age : 17
Inscrit le : 06 Oct 2007
Messages : 148
Localisation : †[[Dans un monde réel]]†
 : ────────── :
Projet Actuel : Projet en C++
Avancement : 
5/1005/1005/1005/100 (5/100)

MessageSujet: Re: Collision entre rectangle et un triangle   Mer 14 Mai - 6:02

C'est bon j'ai réussis a trouver une solution je l'ai fait en trois script voici pour les interessés ange2 En passant j'ai aussi faite un script suplémentaire pour intersection entre triangle et triangle :

gm6:
triangle_rectangle_intersect.gm6 - 0.01MB

Spoiler:
 
Revenir en haut Aller en bas
Collision entre rectangle et un triangleVoir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous pouvez répondre aux sujets dans ce forum
Forum Le CBNA :: Programmation :: Aide confirmés-
Poster un nouveau sujet   Répondre au sujet