Aller au contenu

Intersection Rayon-Sphère

Optique géométrique — base du ray tracing

Exercice Avancé · Analyse · prepa scientifique et economique (CPGE)

Enonce

Implémenter intersection_rayon_sphere(O, D, C, r) où O est l'origine du rayon (3-tuple), D sa direction unitaire, C le centre de la sphère et r son rayon.

Retourner le plus petit $t\geq 0$ tel que $\mathbf{P}(t)$ est sur la sphère, ou None si pas d'intersection.

Signature attendue

def intersection_rayon_sphere(O: tuple, D: tuple, C: tuple, r: float):

Exemples

  • intersection_rayon_sphere((0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (5.0, 0.0, 0.0), 1.0) → 4.0
  • intersection_rayon_sphere((0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (5.0, 5.0, 0.0), 1.0) → None

📖 Rappel de cours

Un rayon est paramétré par $\mathbf{P}(t) = \mathbf{O} + t\mathbf{D}$ avec $t\geq 0$, $\mathbf{D}$ unitaire. Une sphère de centre $\mathbf{C}$ et rayon $r$ vérifie $\|\mathbf{P}-\mathbf{C}\|=r$.

Équation quadratique en $t$ :

$\|\mathbf{O}+t\mathbf{D}-\mathbf{C}\|^2 = r^2$

En posant $\mathbf{L}=\mathbf{O}-\mathbf{C}$ et $\mathbf{D}\cdot\mathbf{D}=1$ :

$t^2 + 2(\mathbf{L}\cdot\mathbf{D})\,t + \|\mathbf{L}\|^2 - r^2 = 0$

Discriminant :

$\Delta = (\mathbf{L}\cdot\mathbf{D})^2 - (\|\mathbf{L}\|^2 - r^2)$

Si $\Delta < 0$ : pas d'intersection. Sinon, on retient la plus petite racine positive $t = -(\mathbf{L}\cdot\mathbf{D}) - \sqrt{\Delta}$ (si elle est $\geq 0$).

← Exercices d'analyse numérique en Python — dichotomie, Newton, intégration

Exercices du meme theme

  • Géométrie 3D — Vecteurs
  • Marche Aléatoire 2D
  • Algorithme de Metropolis

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite