AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Script collision entre deux lignes

Aller en bas 
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 - 15: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 EmptyMer 27 Juin 2007 - 22: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 - 1: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 - 1: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 - 7:54

Ta passé combien de temps dessus ?? :question:
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 - 9: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 - 16: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 - 16: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 - 16: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 - 17: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
-
» Visite entre deux milieux
» Combien de temps entre deux grossesses
» ecart minimum entre 2 grossesses
» Entre deux pages (ft. Caïn)
» [Calculs] - Écart entre deux dates

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