Bonjour je cherche à determiner l'intersection d'une droite avec celle d'un cube .
quelqu'un aurait il un algo à me proposer ou un lien explicite à m'indiquer
Merci
Bonjour je cherche à determiner l'intersection d'une droite avec celle d'un cube .
quelqu'un aurait il un algo à me proposer ou un lien explicite à m'indiquer
Merci
Un cube est caractérisé, par exemple, par l'équation de 6 plans, et les coordonnées d'un point "interne" doit satisfaire 6 inégalités (larges) par rapport à ces équations. Si toutes les inégalités sont strictes, un point est "dans" le cube, et si l'une au moins est nulle, le point est "sur" le cube. Si au moins une des inégalités est fausse, le point est en dehors du cube.
A partir des coordonnées du cube, tu peux déterminer ces équations et les inégalités qui vont avec (en effet, les sommets appartiennent au cube bien entendu, et le barycentre des 8 sommets est à l'intérieur du cube afin de calculer/vérifier rapidement le sens de chaque inégalité).
Ton problème se résume à trouver l'intersection de ta droite avec ces plans, et de ne tenir compte QUE des points d'intersection satisfaisant la condition "appartiennent au cube" (au sens large, donc ceux à la surface du cube). Au final, tu auras zéro, un ou deux points d'intersection définissant donc l'ensemble vide, un seul point d'intersection (droite "tangente" au cube), ou un segment de droite dans l'espace. Dans le cas du segment, tous ses points appartiennent à "l'intérieur" du cube, et ses extrémités sont bien entendu à sa surface.
Après, il y a peut-être déjà des formules "toutes faites" simplifiant le problème, mais la base mathématique est celle que je t'ai présenté. C'est même généralisable à N dimensions si besoin.
Un classique du raytracing. Comme l'a dit Mac LAK, cela se fait très bien avec les 6 équations de plan. Chaque équation s'obtient facilement en calculant la normale a la face. Les équations serviront également pour tester qu'un point d'intersection est bien sur une face (= entre les 4 plans).
Google : ray box intersection
Merci pour vos reponses.
Maintenant il ne me reste plus qu'à essayer de detaillée l'algo.
Bonjour,
Je ne sais ps est que qlq'1 de vous à réussi à implémenter l'algorithme sous Matlab.si c'est le cas merci de vous me le faire passer.
cordialement
salut,
tu peux jeter un oeil sur ce lien,
la fonction clipLine3d correspond a ce que tu cherches je crois.
A+
Salut,
en raytracing on utilise l'algo de Smits, très rapide, peu de calcul. Un exemple de code sous Matlab ici
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager