AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

 

 Script collision entre deux lignes

Aller en bas 
4 participants
AuteurMessage
Blizter
Banni(e)



Messages : 2002

Script collision entre deux lignes Empty
MessageSujet: Script collision entre deux lignes   Script collision entre deux lignes EmptyVen 18 Mai 2007 - 17:57

Bonjour j'ai fait un script qui permet de detecter si deux ligne se croisent.

Citation :
x1=argument0;y1=argument1;x2=argument2;y2=argument3;//ligne 1
x3=argument4;y3=argument5;x4=argument6;y4=argument7;//ligne 2
if(x1>x2)//On met tout à l'endroit.
{
temp=x2;
x2=x1;
x1=temp;
temp=y2;
y2=y1;
y1=temp;
}
//--> Afin de sauver un peu de calcul
aa=point_direction(x1,y1,x2,y2);
bb=point_distance(x1,y1,x3,y3);
cc=point_distance(x1,y1,x4,y4);
//<--
emergency=0;
if(x2!=x1)
{
temp11=(y2-y1)/(x2-x1);
}
else
{
emergency=1;
}
temp1=aa-point_direction(x1,y1,x3,y3);
valInitialeY=sin(degtorad(temp1))*bb;
valInitialeX=cos(degtorad(temp1))*bb;
temp2=(360-aa)+point_direction(x1,y1,x4,y4);
valFinaleY=sin(degtorad(temp2))*cc;
valFinaleX=cos(degtorad(temp2))*cc;
if(emergency!=1)
{
if(valFinaleX-valInitialeX!=0)
{
tauxVar=(abs(valFinaleY)+abs(valInitialeY))/(valFinaleX-valInitialeX);
}
else
{
tauxVar=100000000;
}
inv=0;
if(((x4-x3)*temp11)+y3<y4)
{
tauxVar=-tauxVar;
inv=1;
}
zero=(valInitialeY/tauxVar)+valInitialeX;
}
else//Emergency : Au cas ou la ligne 1 est verticale, on évite la division par zéro.
{
if(y4!=y3 && x4!=x3)
{
zero=(x4-x3)/(y4-y3);
zero=-(x3-x1)/zero;
if(y1<y2)
{
zero+=y3-y1;
}
else
{
zero+=y3-y2;
}
zeroX=x1+lengthdir_x(zero,aa);
zeroY=y1+lengthdir_y(zero,aa);
if((zeroY>y1 && zeroY<y2) || (zeroY<y1 && zeroY>y2))
{
if((x3<=x1 && x4>=x1) || (x4<=x1 && x3>=x1))
{
return 1;
}
}
return 0;
}
else if(y4=y3)
{
if((y3<y1 && y3>y2) || (y3>y1 && y3<y2))
{
if((x3<=x1 && x4>=x1) || (x4<=x1 && x3>=x1))
{
return 1;
}
}
return 0;
}
else if(x4=x3)
{
if(x1!=x3)
{
return 0;
}
else if(((y3<y1 && y3>y2) || (y3>y1 && y3<y2)) || ((y4<y1 && y4>y2) || (y4>y1 && y4<y2)) || ((y3<y1 && y4>y2) || (y3>y2 && y4<y1)))
{
return 1;
}
else
{
return 0;
}
}
}
zeroX=x1+lengthdir_x(zero,aa);
zeroY=y1+lengthdir_y(zero,aa);
//-----//
//Lignes explicatives//Décommenter pour avoir une idée du fonctionnement du script//
//draw_line_color(x3+lengthdir_x(valInitialeX,point_direction(x3,y3,x1,y1)+temp1),y3+lengthdir_y(valInitialeX,point_direction(x3,y3,x1,y1)+temp1),x3+lengthdir_x(point_distance(x1,y1,x2,y2)-valInitialeX,point_direction(x3,y3,x1,y1)+temp1+180),y3+lengthdir_y(point_distance(x1,y1,x2,y2)-valInitialeX,point_direction(x3,y3,x1,y1)+temp1+180),c_blue,c_blue);
//draw_line_color(x4,y4,x3+lengthdir_x(valFinaleX-valInitialeX,point_direction(x3,y3,x1,y1)+temp1+180),y3+lengthdir_y(valFinaleX-valInitialeX,point_direction(x3,y3,x1,y1)+temp1+180),c_blue,c_blue);
//draw_circle_color(x1+lengthdir_x(zero,point_direction(x1,y1,x2,y2)),y1+lengthdir_y(zero,point_direction(x1,y1,x2,y2)),8,c_green,c_green,0);
//draw_text(10,10,"tauxVar: "+string(tauxVar));
//draw_text(10,25,"zero: "+string(zero));
//-----//
if(zeroX>x1 && zeroX<x2)
{
fs1=zeroY+lengthdir_y(valInitialeY,aa-90);
fs2=zeroY+lengthdir_y(valFinaleY,aa+90);
//-----//
//Lignes explicatives//Décommenter pour avoir une idée du fonctionnement du script//
//draw_circle(zeroX+lengthdir_x(valInitialeY,aa-90),fs1,5,1);
//draw_circle(zeroX+lengthdir_x(valFinaleY,aa+90),fs2,5,1);
//-----//
if(valInitialeY<0)
{
fs1-=(abs(lengthdir_x(valInitialeY,aa-90))*aa)/(90-aa);
}
else
{
fs1+=(abs(lengthdir_x(valInitialeY,aa-90))*aa)/(90-aa);
}
if(valFinaleY>0)
{
fs2-=(abs(lengthdir_x(valFinaleY,aa+90))*aa)/(90-aa);
}
else
{
fs2+=(abs(lengthdir_x(valFinaleY,aa+90))*aa)/(90-aa);
}
//-----//
//Lignes explicatives//Décommenter pour avoir une idée du fonctionnement du script//
//draw_circle(zeroX,fs1,5,1);
//draw_circle(zeroX,fs2,5,1);
//-----//
if((zeroY<fs1 && zeroY>fs2) || (zeroY>fs1 && zeroY<fs2))
{
return 1;
}
}
return 0;

Voici le lien pour télécharger l'exemple : http://www.zshare.net/download/lineintersect-gm6.html

Attention : Dans l'exemple il y a 2 scripts bonus Wink qui servent a renvoyé l'emplacement de la collision.
Revenir en haut Aller en bas
Blizter
Banni(e)



Messages : 2002

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 0:37

Script très populaire lol.
Revenir en haut Aller en bas
Ablationer
Administrateur
Ablationer


Messages : 14995
Localisation : QuébeCanada
Projet Actuel : pas trop mourir

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 3:08

ça te surprend?

_________________
Yo this is stven, White race. The hs diploma i'm holding in this pic is usually there, my principal put it there in 2008. I'm easily startled by coarse fabrics. only one who stayed in the Burger King Kid's Club after they started charging dues. It's called having a fkng job. All clothes found on google except this crown which doesn't say who designed it
Script collision entre deux lignes AQwrp6X
Revenir en haut Aller en bas
http://www.lecbna.org/
Blizter
Banni(e)



Messages : 2002

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 3:50

Ya really.
Revenir en haut Aller en bas
xenamart
Utilisateur confirmé: Rang ***
xenamart


Messages : 554
Localisation : sur la toile, entre google et le cbna
Projet Actuel : Rufal

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 9:54

Ta passé combien de temps dessus ?? ❓
Revenir en haut Aller en bas
http://rufal.free.fr
M@d_Doc
Modérateur
M@d_Doc


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

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 11:19

ouah... très fort, et surement utile, mais pourait ti donner un exemple d'utilisation? Je vois pas là, et j'ai peur de passer à coté d'un truc.

_________________
Script collision entre deux lignes Control-commentTous les icones de gm utilisables sur le cbna ICI  Script collision entre deux lignes Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
Blizter
Banni(e)



Messages : 2002

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 18:49

collision entre 2 polygones.
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


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

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 18:49

ah ouais j'y avais pas pensé.
Ca parait beaucoup plus utile d'un coup ^^

_________________
Script collision entre deux lignes Control-commentTous les icones de gm utilisables sur le cbna ICI  Script collision entre deux lignes Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
Invité
Invité




Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 18:56

Comme Daminetreg l'avait dit quelque part, si on ne félicite pas les bons programmeurs ils ne feront plus rien, et donc malgré le fait que ce script ne soit pas utile dans l'immédiat mais vu qu'il reste très fort, et que c'est bien trop balèze pour moi, par les pouvoirs qui me sont conférés je dis bravo à Blitzer noel
Revenir en haut Aller en bas
Blizter
Banni(e)



Messages : 2002

Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes EmptyJeu 28 Juin 2007 - 19:06

loule ok merci !
Revenir en haut Aller en bas
Contenu sponsorisé





Script collision entre deux lignes Empty
MessageSujet: Re: Script collision entre deux lignes   Script collision entre deux lignes Empty

Revenir en haut Aller en bas
 
Script collision entre deux lignes
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [script] Intersection entre deux lignes : booléen
» [Résolu] Position en X d'une collision entre deux objet
» Dégradés sympa en deux lignes
» Créer une ligne entre deux objets.
» vérifier si une variable est entre deux score

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