SAVOIR SI UN POINT DE L'ESPACE EST OU N'EST PAS DANS UN TRIANGLE (DE L'ESPACE LU

Neron2005 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 1 décembre 2013 - 19 juil. 2006 à 17:17
Neron2005 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 1 décembre 2013 - 6 juin 2007 à 23:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38673-savoir-si-un-point-de-l-espace-est-ou-n-est-pas-dans-un-triangle-de-l-espace-lui-aussi

Neron2005 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 1 décembre 2013 1
6 juin 2007 à 23:30
oui c'est un erreur mais le truc c'est que ma fonction test si la progection du point est ou non dans le triangle.
oliv_def Messages postés 14 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 20 décembre 2007
21 mai 2007 à 09:18
Excellent merci :-) !!
Je regarde ca de suite !
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
18 mai 2007 à 15:41
j'ai généralisé un de mes programmes (2D) pour faire finalement la même chose que ce programme... l'intérêt est qu'il permet aussi de savoir si un point est dans une pyramide, et qu'il utilise une autre approche mathématique du problème (changement de base), tout ceci avec très peu de calculs.
(c'était en réponse à Oliv_Def, mon prog devrait fonctionner avec son problème)

http://www.vbfrance.com/codes/SAVOIR-SI-POINT-3D-EST-DANS-TRIANGLE-PYRAMIDE_42743.aspx

bonne prog à tous
oliv_def Messages postés 14 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 20 décembre 2007
17 mai 2007 à 12:40
Désolé, mais j'ai executer ce code en testant non pas 0 pour Z mais une valeure autre et le point est toujours dans le triangle..

Bref sauf erreure de ma part, cela ne fonctionne pas en 3D :-(
lording Messages postés 6 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 11 février 2008
16 août 2006 à 16:18
Bonjour à tous,

Je suis à la recherche d'un code similaire.

Explication:
Je capture des trames GPS et converti les coordonnées WGS(etrs89) en lambert72.
Ainsi j'obtiens des valeurs X, Y, H (ma position actuelle).

J'ai un fichier CSV qui contient des position X, Y, H et j'aimerait maintenant que mon code vérifie le contenu ce mon fichier et m?indique si mes coordonnées actuelle se situent dans un rayon de 2 mètres autour d'une des valeurs lu dans le fichiers CSV.

Si oui, alors BIP
Si non alors on continue.

Ceci est mon premier commentaire, alors si je ne m'y suis pas bien pris, veuillez m'en excuser.

Voici un exemple de position X,Y,Z voir l'application cconvert sur le site: www.ngi.be
Valeur de X=150120.001
Valeur de Y=170365.998
Valeur de H=65.345

conversion de:
datum:ETRS89
Elipsoide: GRS80
Projection:None
Coordinates:Geographic

<<<<< Conversion vers:
Datum: Belgian Datum72
Elipsiode: Hayford24
Projection: Lambert
Coordinates: Plane

En Vous remerciant pour votre aide et B-R-A-V-O pour VBfrance !!!
Neron2005 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 1 décembre 2013 1
20 juil. 2006 à 18:11
Tres juste je vé reparer ca
rambc Messages postés 224 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 29 mars 2009
20 juil. 2006 à 11:03
Il me semble qu'il ya deux tests de trop.
Si alpha et beta sont positifs pour le 1er repère affine (A;AB;AC) alors on est sur que le point se situe dans le secteur angulaire BAC "en haut à droite" relativement au repère tracé de façon usuelle. La réciproque est vraie.
Pour le 2ème repère affine (B;BC;BA) alors alpha et beta sont positifs si et seulement si le point se situe dans le secteur angulaire CAB.
Un dessin montre qu'il n'est pas utile de tester le 3ème repère affine (C;CB;CA).
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
20 juil. 2006 à 08:43
# If S1 >= 0 Then
# If S2 >= 0 Then

Pour faire à la fois rapide et clair, il suffit d'inverser les conditions :

If S1 < 0 Then Goto Suite
If S2 < 0 Then Goto Suite
...

Et en VB.Net :
If S1 >= 0 AndAlso S2 >= 0 AndAlso ... Then
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
19 juil. 2006 à 22:44
Et... enocre moi... Une autre petite remarque.

La structure de test du type :
IF NOT Variable = 0 THEN
me semble moins rapide que son équivalent :
IF variable <>0 THEN

donc, si tu cherches la rapidité...

Amicalement,
Us.
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
19 juil. 2006 à 22:32
Bonsoir,

Une simple question... Si je comprend bien, le but n'est pas d'en faire une application mathématique, mais de l'utiliser pour de la 3D. Dans ces conditions, les déclarations des variables en Double, ne seraient-elles pas suffisantes en LONG ? (donc plus rapide, et valeurs entières...)

Dans le même thème, il me semble que les lignes :
"Dim Alpha, Betha ' Les coeficiants des vecteurs "
"Dim A, B, C, d, N "
gagneraient à être déclarées avec le type. Actuellement, ces variables sont en Variant, donc peu rapide et non nécessaire ici... et même chose dans "IsPointInTRGL".

Amicalement,
Us.
Neron2005 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 1 décembre 2013 1
19 juil. 2006 à 20:15
Alors MadM@tt ecrire le code de cette facon :

# If S1 >= 0 Then
# If S2 >= 0 Then
# If S3 >= 0 Then
# If S4 >= 0 Then
# If S5 >= 0 Then
# If S6 >= 0 Then
# IsPointInTRGL = True
# End If
# End If
# End If
# End If
# End If
# End If

permet de gagner du temps (exemple : si S3 < 0, il n'y aurra que trois calcule alors que faire If S1>=0 and S2>=0 and .... Then, il y aurra quoi qu'il arrive 6 calcules).
Si on ne fait cette action qu'une fois, pourquoi pas, mais si on veut comme moi le faire une vingtaine de fois par seconde, c'est toujours bien de gagnez quelques centieme.
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
19 juil. 2006 à 19:35
Tu peux aussi employé PlaneIntersectLine si l'intersection correspond a ton point alors il est bien dans la surface du triangle.

@+
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
19 juil. 2006 à 18:11
J'ai adoré la présentation de la source, ça permet de comprendre le fonctionnement sans se casser le crane à déchiffrer le code, ça fait gagner un temps fou et pas tout le monde le fait. Bravo pour ça.

Sinon :
# If S1 >= 0 Then
# If S2 >= 0 Then
# If S3 >= 0 Then
# If S4 >= 0 Then
# If S5 >= 0 Then
# If S6 >= 0 Then
# IsPointInTRGL = True
# End If
# End If
# End If
# End If
# End If
# End If
à remplacer par :
If S1>=0 and S2>=0 and .... Then

Endif

Puis sinon pour tes goto, enfin c'est un avis personnel, mais des fois c'est plus parlant de mettre un mot ou une phrase plutot qu'un numéro

Et c'est marrant le colorateur syntaxique ne reconnait meme pas le mot clé rem... ^^
(PS : je croit que coefficient, ben ça s'écrit comme ça)


Bonne continuation
A+
Neron2005 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 1 décembre 2013 1
19 juil. 2006 à 17:17
J'oubliais de dire que si l'on veut l'utiliser dans le plan (càd sur la page form), il sufit de mettre la valeur 0 aux coordonées z. C'est juste un rappel mais pas necessairement inutile.