onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: [script] Intersection entre deux lignes : booléen Sam 7 Nov 2009 - 16:37 | |
| Cette fonction retourne un booléen : 1 si il y a intersection entre nos deux segments, et 0 si il n'y en a pas. line_intersect : - Code:
-
//line_intersect(x1,y1,x2,y2,x3,y3,x4,y4) var x1,y1,x2,y2,x3,y3,x4,y4,a,b,c,d,inter;
x1 = argument0 ; y1 = argument1 x2 = argument2 ; y2 = argument3 x3 = argument4 ; y3 = argument5 x4 = argument6 ; y4 = argument7
a = (y4-y3)*(x2-x1) - (x4-x3)*(y2-y1) if (a == 0) { return 0 }
b = (x4-x3)*(y1-y3) - (y4-y3)*(x1-x3) b = b / a
d = (x2-x1)*(y1-y3) - (y2-y1)*(x1-x3) d = d / a
ix = x1 + b*(x2-x1) iy = y1 + b*(y2-y1) inter = 0
if (b > 0 && b < 1 && d >0 && d < 1) inter = 1
return inter
Les coordonnées du point d'intersection sont : ix et iy
Dernière édition par onilink_ le Sam 29 Oct 2011 - 16:09, édité 3 fois |
|
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [script] Intersection entre deux lignes : booléen Mer 20 Oct 2010 - 18:49 | |
| Plus mieux: //line_intersect(x1,y1,x2,y2,x3,y3,x4,y4) return (argument2-argument0)*(argument7-argument5)!=(argument6-argument4)*(argument3-argument1)
Si deux deux droites sont parallèle, leurs vecteurs directeurs sont colinéaire et je fait le test en mettant les divisions de l'autre côté de l'égalité pour ne pas a avoir a gérer les divisions par 0 (c'est en faite le déterminant). Et puis un "!=" a la place d'un "==" pour avoir l'opposé du test
J'ai pas teste, mais normalement sa marche.
Par contre je ne vois pas bin l'utilité car c'est extrêmement rare que deux droites soient parallèle en prenant les droites comme 2 points.
Dernière édition par arthuro le Mer 20 Oct 2010 - 19:47, édité 1 fois |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [script] Intersection entre deux lignes : booléen Mer 20 Oct 2010 - 19:21 | |
| ouai, en fait ma fonction retourne s´il y a intersection entre deux segment (et pas droites). Donc forcement c´est un peu plus long :p D´ailleurs faudras que je la revoi, j´ai appris pas mal de choses depuis que je l´ai posté |
|
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [script] Intersection entre deux lignes : booléen Mer 20 Oct 2010 - 19:46 | |
| A oui désolé, excuse moi. Sa change tous alors |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [script] Intersection entre deux lignes : booléen Jeu 21 Oct 2010 - 14:16 | |
| y a pas de mal. J´aurais du mieux préciser la fonction de ce script. |
|
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [script] Intersection entre deux lignes : booléen Ven 22 Oct 2010 - 18:53 | |
| ce serait bien de retourner la position de collision, aussi ^^ _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
Contenu sponsorisé
| Sujet: Re: [script] Intersection entre deux lignes : booléen | |
| |
|