AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -20%
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, ...
Voir le deal
399 €

 

 Collision entre rectangle et un triangle

Aller en bas 
5 participants
AuteurMessage
CoDeAVE
Utilisateur confirmé: Rang **
CoDeAVE


Messages : 408
Localisation : Québec

Collision entre rectangle et un triangle Empty
MessageSujet: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyMer 7 Mai 2008 - 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
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyMer 7 Mai 2008 - 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.

_________________
Collision entre rectangle et un triangle Control-commentTous les icones de gm utilisables sur le cbna ICI  Collision entre rectangle et un triangle Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
edi9999
Utilisateur confirmé: Rang *****
edi9999


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyMer 7 Mai 2008 - 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: Collision entre rectangle et un triangle 86241374gg6.th

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

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
Gab666
Modérateur 'Zut'
Gab666


Messages : 5340
Localisation : **I move away from the mic to breathe in

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyJeu 8 Mai 2008 - 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
http://www.dermanium-online.webou.net/
CoDeAVE
Utilisateur confirmé: Rang **
CoDeAVE


Messages : 408
Localisation : Québec

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptySam 10 Mai 2008 - 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 ❓

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


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptySam 10 Mai 2008 - 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;
}
}

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
CoDeAVE
Utilisateur confirmé: Rang **
CoDeAVE


Messages : 408
Localisation : Québec

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptySam 10 Mai 2008 - 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
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptySam 10 Mai 2008 - 19:37

si le triangle est fixe, fait une collision avec un sprite de triangle :gniah:

_________________
Collision entre rectangle et un triangle Control-commentTous les icones de gm utilisables sur le cbna ICI  Collision entre rectangle et un triangle Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
CoDeAVE
Utilisateur confirmé: Rang **
CoDeAVE


Messages : 408
Localisation : Québec

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyDim 11 Mai 2008 - 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 *****
master47


Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyLun 12 Mai 2008 - 10:56

Patiente je te code cela Wink

_________________
Suivez la timeline ! The PacWars Timeline
C# .NET, Web & Sound Design.
---
Oldies: http://livegallery.lescigales.org/
Lawl :
Spoiler:
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
master47
Utilisateur confirmé: Rang *****
master47


Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyLun 12 Mai 2008 - 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;

_________________
Suivez la timeline ! The PacWars Timeline
C# .NET, Web & Sound Design.
---
Oldies: http://livegallery.lescigales.org/
Lawl :
Spoiler:
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
CoDeAVE
Utilisateur confirmé: Rang **
CoDeAVE


Messages : 408
Localisation : Québec

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyMar 13 Mai 2008 - 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
Utilisateur confirmé: Rang **
CoDeAVE


Messages : 408
Localisation : Québec

Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle EmptyMer 14 Mai 2008 - 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
Contenu sponsorisé





Collision entre rectangle et un triangle Empty
MessageSujet: Re: Collision entre rectangle et un triangle   Collision entre rectangle et un triangle Empty

Revenir en haut Aller en bas
 
Collision entre rectangle et un triangle
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Collision entre un point et un rectangle incliné
» Script collision entre deux lignes
» [problème réglé] Gm physic 4 Triangle
» [résolu] Créer un mask
» rectangle de selection

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: