EX. DE MODULARISATION : POINT DANS TRIANGLE

Signaler
Messages postés
908
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
-
Messages postés
88
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
2 janvier 2007
-
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/34364-ex-de-modularisation-point-dans-triangle

Messages postés
88
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
2 janvier 2007

Tu pourais le faire de la même façon avec un tétraèdre :
Tu dois probablement jouer avec les points de percée.

puisque ton solide a 4 sommets dans ce cas, un point y est contenu SSI la droite passant par un des sommets et ton point perce la base opposée au sommet.
Les cas limites étants : point sur une arrête ou un sommet.

Pour le cube, tu le découpe en 2 tétraèdres.

Pour la sphère, il y a une formule de la distance entre 2 point dans l'espace dans l'espace. Il suffit que d < r.

C'est des connaissances en maths qu'il faut plus qu'en VB ;-)
Messages postés
14
Date d'inscription
mardi 15 mai 2007
Statut
Membre
Dernière intervention
20 décembre 2007

Super :-) !
mais ou trouve t on le code testant si un point de l'espace est dans un volume de l'espace (cube) ou dans un premier temps si un point de l'espace est dans un triangle de l'espace ?
on trouve sur VBFRANCE le code : http://www.vbfrance.com/code.aspx?ID=38673, mais il ne repond pas au besoin puisqu'il ne fonctionne que dans le plan egalement...
Bref ce serait tres bien si qqun etudiat le probleme, quand a moi j'ai ce besoin mais ne suis pas un master en vb... :-(
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
286
Tu n'aimes pas les commentaires non constructifs donc je n'en fais pas
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonjour,

A la suite de la remarque de VBLOVER, sur son code il y a une remarque très intéressante de VbMaster, précisant l'existance d'une API réalisant la même chose, valable pour de nombreuses formes géomètriques...

Autrement, le code proposé me semble assez bien construit dans l'ensemble... Néanmoins, j'ai une remarque sur le code proposé...

LE code :

=

If ppy < p.Y Then
equ = False
Else
If ppy = p.Y Then
equ = True
Else
equ = True
End If
End If

=

A été simplifié par Gally avec :

=

If (b.X - a.X) <> &H0 Then
ppy = (b.Y - a.Y) * (p.X - a.X) / (b.X - a.X) + a.Y
If ppy < p.Y Then
setTriangle = False
Else
setTriangle = True
End If
End If

=

Il me semble qu'on peut encore faire plus optimum, par :

If (b.X - a.X) <> &H0 Then
ppy = (b.Y - a.Y) * (p.X - a.X) / (b.X - a.X) + a.Y
setTriangle = (ppy > p.Y)
End If

=

Amicalement,
Us.
Afficher les 8 commentaires