AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 [script] Intersection entre deux lignes : booléen

Aller en bas 
AuteurMessage
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[script] Intersection entre deux lignes : booléen Empty
MessageSujet: [script] Intersection entre deux lignes : booléen   [script] Intersection entre deux lignes : booléen EmptySam 7 Nov 2009 - 15: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 - 14:09, édité 3 fois
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1441
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

[script] Intersection entre deux lignes : booléen Empty
MessageSujet: Re: [script] Intersection entre deux lignes : booléen   [script] Intersection entre deux lignes : booléen EmptyMer 20 Oct 2010 - 16: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.

_________________
[script] Intersection entre deux lignes : booléen Pochette[script] Intersection entre deux lignes : booléen Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2


Dernière édition par arthuro le Mer 20 Oct 2010 - 17:47, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[script] Intersection entre deux lignes : booléen Empty
MessageSujet: Re: [script] Intersection entre deux lignes : booléen   [script] Intersection entre deux lignes : booléen EmptyMer 20 Oct 2010 - 17: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é Surprised

_________________
[script] Intersection entre deux lignes : booléen Runningpotato1[script] Intersection entre deux lignes : booléen TvF6GED
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1441
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

[script] Intersection entre deux lignes : booléen Empty
MessageSujet: Re: [script] Intersection entre deux lignes : booléen   [script] Intersection entre deux lignes : booléen EmptyMer 20 Oct 2010 - 17:46

A oui désolé, excuse moi.
Sa change tous alors

_________________
[script] Intersection entre deux lignes : booléen Pochette[script] Intersection entre deux lignes : booléen Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[script] Intersection entre deux lignes : booléen Empty
MessageSujet: Re: [script] Intersection entre deux lignes : booléen   [script] Intersection entre deux lignes : booléen EmptyJeu 21 Oct 2010 - 12:16

y a pas de mal. J´aurais du mieux préciser la fonction de ce script.

_________________
[script] Intersection entre deux lignes : booléen Runningpotato1[script] Intersection entre deux lignes : booléen TvF6GED
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] Intersection entre deux lignes : booléen Empty
MessageSujet: Re: [script] Intersection entre deux lignes : booléen   [script] Intersection entre deux lignes : booléen EmptyVen 22 Oct 2010 - 16:53

ce serait bien de retourner la position de collision, aussi ^^

_________________
[script] Intersection entre deux lignes : booléen Control_commentTous les icones de gm utilisables sur le cbna ICI [script] Intersection entre deux lignes : booléen Main1_change_sprite
Revenir en haut Aller en bas
http://www.lecbna.org
Contenu sponsorisé




[script] Intersection entre deux lignes : booléen Empty
MessageSujet: Re: [script] Intersection entre deux lignes : booléen   [script] Intersection entre deux lignes : booléen Empty

Revenir en haut Aller en bas
 
[script] Intersection entre deux lignes : booléen
Revenir en haut 
Page 1 sur 1

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