commit 8e999df399628c79e832acd5f0c52b3daee0a2f7
parent b65b06f7fb7b8732ed3ef27d038c460f8f241fa3
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 29 Mar 2023 18:35:05 +0200
Relecture à la phrase de la section 3 du noweb
L'introduction de la section 3 a été retravaillé en essayant de tenir
compte des notes que nous avions laissées. Pour le reste, cette relecture
se résume à un travail de mise en forme et d'édition minimale : les
paragraphes ont été remplacé par des alinéas.
Diffstat:
2 files changed, 133 insertions(+), 145 deletions(-)
diff --git a/src/biblio.bib b/src/biblio.bib
@@ -1,11 +1,23 @@
@article{
matsumoto1998mersenne,
- title={Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator},
- author={Matsumoto, Makoto and Nishimura, Takuji},
- journal={ACM Transactions on Modeling and Computer Simulation (TOMACS)},
- volume={8},
- number={1},
- pages={3--30},
- year={1998},
- publisher={ACM New York, NY, USA}
+ title = {Mersenne twister: a 623-dimensionally equidistributed uniform
+ pseudo-random number generator},
+ author = {Matsumoto, Makoto and Nishimura, Takuji},
+ journal = {ACM Transactions on Modeling and Computer Simulation (TOMACS)},
+ volume = {8},
+ number = {1},
+ pages = {3--30},
+ year = {1998},
+ publisher = {ACM New York, NY, USA}
+}
+
+@book{
+ C_language,
+ author = {Kernighan, Brian W.},
+ editor = {Ritchie, Dennis M.},
+ title = {{T}he {C} {P}rogramming {L}anguage},
+ year = {1988},
+ isbn = {0131103709},
+ edition = {2nd},
+ publisher = {Prentice Hall Professional Technical Reference},
}
diff --git a/src/sgs_compute_sensitivity_translation.nw b/src/sgs_compute_sensitivity_translation.nw
@@ -58,12 +58,11 @@
Ce document est un exercice dans lequel on choisit de décrire un exemple de
sensibilité sans aucune ambition de généralité en se concentrant sur une
configuration simplifiée. Contrairement à une pratique Monte-Carlo plus
-conventionnelle, nous aurons à vu pendant l'entièreté des données qui décrivent
-le systèmes à savoir sa configuration géométriques et ses propriétés physiques.
+conventionnelle, nous aurons à vu l'entièreté des données qui décrivent le
+systèmes à savoir sa configuration géométriques et ses propriétés physiques.
Dit autrement, nous saurons à chaque instant où les chemins se situent et ainsi
pourrons référencer les différentes étapes de suivi de ces chemins relativement
-aux parois de notre scène (ex: paroi de droite, surface émettrice,
-{\etc}).
+aux parois de notre scène (ex: paroi de droite, surface émettrice, {\etc}).
Par cette démarche nous proposons de construire un algorithme de sensibilité de
manière analogue comme nous savons le faire en transfert radiatif
@@ -78,7 +77,7 @@ et de la géométrie du système:
\item on a identifié les sources de sensib;
\item on a identifié un couplage ou niveau des sources;
\item on utilise MC pour résoudre le pbr (par double random);
- \item on résout le pbr de sensib jusqu'à sa mise en oeuvre.
+ \item on résout le pbr de sensib jusqu'à sa mise en {\oe}uvre.
\end{itemize}
\paragraph{TODO} Parler que l'on va décrire l'algorithme jusqu'à sa mise en
@@ -92,7 +91,7 @@ $=$ haut, d $=$ droite etc...), soit par rapport à l'origine du repère.
\section{Description du problème}
\label{sec:probleme}
-Le but du présent document est d'illustrer la mise en oeuvre algorithmique d'un
+Le but du présent document est d'illustrer la mise en {\oe}uvre algorithmique d'un
calcul de sensibilité sur l'exemple simple d'un parallélépipède
(figure~\ref{fig:configuration}). Nous nous intéressons ici à la déformation
géométrique liée à la translation de sa paroi supérieure et étudions l'impact
@@ -227,17 +226,17 @@ point du récepteur.
Pour évaluer cette sensibilité nous commençons par donner le modèle physique
qui décrit les sources et le transport de la sensibilité géométrique
-(section~\ref{modele_sensib}). Nous développons alors un algorithme Monte-Carlo
-pour résoudre le problème que nous venons de poser en suivant la propagation
-des sources de sensibilité via l'échantillonnage de chemins qui partent
-directement de ces sources, en l'occurrence ici la seule paroi du haut
-(section~\ref{monte_carlo}).
+(section~\ref{sec:modele_sensib}). Nous développons alors un algorithme
+Monte-Carlo pour résoudre le problème que nous venons de poser en suivant la
+propagation des sources de sensibilité via l'échantillonnage de chemins qui
+partent directement de ces sources, en l'occurrence ici la seule paroi du haut
+(section~\ref{sec:monte_carlo}).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Le modèle de sensibilité
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Modèle de sensibilité géométrique}
-\label{modele_sensib}
+\label{sec:modele_sensib}
La sensibilité géométrique de la luminance est définie telle que:
\begin{equation}
@@ -277,7 +276,7 @@ la paroi dans la direction spéculaire. Dans notre exemple, le milieu est
transparent et toutes les autres conditions aux limites de sensibilité sont
nulles. On se contente donc d'ignorer la sensibilité incidente à la paroi. On
rappelle par ailleurs que la paroi du haut est spéculaire. La source de
-sensibilité $S_{b,\PI}$ est donc définie par ci-dessous. On renvoit le lecteur
+sensibilité $S_{b,\PI}$ est donc définie comme ci-dessous. On renvoit le lecteur
à l'annexe \ref{ann:cl_sensib} pour les développements qui mènent à cette
expression:
\begin{equation}
@@ -293,10 +292,10 @@ L(\vec{x},\vec{\omega}_{spec},\PI)
\label{eq:clsensib}
\end{equation}
avec $\vec{\omega}_{spec} = \vec{\omega} - 2 (\vec{\omega} \cdot \vec{n}_h)
-\vec{n}_h$ et $\beta_{\vec{\chi},h}$ est le coefficient issu de la
-décomposition de $\vec{\chi}$ en deux vecteurs, l'un orienté par $\vec{\omega}$
-et l'autre orienté par un vecteur $\vec{u}_h$ tangent à la paroi du haut (voir
-annexe \ref{ann:proj}). Enfin $\beta_{\vec{\chi},h}$ est la norme du vecteur
+\vec{n}_h$ et $\beta_{\vec{\chi},h}$ le coefficient issu de la décomposition de
+$\vec{\chi}$ en deux vecteurs, l'un orienté par $\vec{\omega}$ et l'autre
+orienté par un vecteur $\vec{u}_h$ tangent à la paroi du haut (voir annexe
+\ref{ann:proj}). Enfin $\beta_{\vec{\chi},h}$ est la norme du vecteur
$\vec{\chi}$ projeté sur $\vec{u}_h$ .
\paragraph{NOTE} La dérivée spatiale $\partial_{1,\vec{\gamma}}
@@ -319,13 +318,13 @@ la limite de sensibilité dépend de:
\end{itemize}
En résumé, la source de sensibilité émise par la paroi spéculaire est le
résultat du couplage entre le modèle de sensibilité, le modèle de transfert
-radiatif et le modèle de dérivée spatiale. Les dérivées spatiale et angulaire
-de la luminance sont simplement considérées comme des quantités physique, au
-même titre que la sensibilité géométrique (voir~\cite{papier_sensib} pour la
+radiatif et le modèle de dérivée spatiale. La dérivées spatiale et angulaire
+de la luminance sont simplement considérées comme des quantités physiques, au
+même titre que la sensibilité géométrique (voir~\cite{papier_sensib}) pour la
description de leur modèle). Résoudre notre problème de sensibilité géométrique
-revient donc à résoudre un problème de transport couplé qui va dépendre à la
-fois des source radiatives (à travers $L(\vec{x},\vec{\omega}_{spec},\PI)$),
-des sources de dérivées spatiales dans la direction $\vec{u}$ (à travers
+revient donc à résoudre un problème de transport couplé qui dépend à la fois
+des source radiatives (à travers $L(\vec{x},\vec{\omega}_{spec},\PI)$), des
+sources de dérivées spatiales dans la direction $\vec{u}$ (à travers
$\partial_{1,\vec{u}} L(\vec{x},\vec{\omega}_{spec},\PI)$) et des sources de
dérivées spatiales dans la direction $\vec{\chi}$ (à travers
$\partial_{1,\vec{\chi}} L(\vec{x},\vec{\omega}_{spec},\PI)$).
@@ -379,32 +378,27 @@ et la source de la paroi de droite est donnée par la condition à la limite:
% Algorithme Direct
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Résolution par Monte-Carlo}
-\label{monte_carlo}
-
-\paragraph{Commentaires}
-On veut estimer par Monte-Carlo la sensibilité géométrique du flux reçu par le
-récepteur à l'épaisseur du cube. On va donc écrire un fichier
-[[sgs_compute_trans_sensib.c]] qui lance ce calcul et affiche le résultat.
-Ce fichier contient entre autre la boucle d'intégration et la fonction de
-réalisation de l'algorithme.
-
-\paragraph{}
-On a identifié les sources. On choisit d'utiliser un algorithme direct pour
-résoudre le problème, c'est à dire de propager les sources jusqu'au récepteur
-par un échantillonnage des sources et des chemins qui les propageront vers le
-récepteur.
-
-\paragraph{}
-Dans cette section nous écrivons la fonction [[realisation]] en charge
-d'échantillonner un chemin et d'en calculer le poids Monte-Carlo.
-La mise en oeuvre ici proposée est particulière dans le sens où le chemin du
-problème couplé est d'abord échantillonné et conservé en totalité
-(section~\ref{subsec:chemin}). Son poids n'est calculé qu'a posteriori à partir
-du chemin ainsi construit (section~\ref{subsec:poids}). Cette proposition
-diffère d'une approche plus conventionnelle où la position et la direction
-courante du chemin ne sont que des données locales à chaque étape de la
-construction du chemin; son poids étant mis à jour si nécessaire à chacune de
-ces étapes.
+\label{sec:monte_carlo}
+
+Dans cette section nous écrivons un algorithme de Monte Carlo pour résoudre le
+problème décrit en section~\ref{sec:probleme} à partir du modèle de sensibilité
+géométrique décrit en section~\ref{sec:modele_sensib}. Notre algorithme est
+construit de manière analogue avec pour support la mise en {\oe}uvre pratique
+de sa [[<<fonction de réalisation>>]] en langage C~\cite{C_language}. Pour
+cela, nous échantillonnerons des chemins qui démarrent directement de la source
+de sensibilité, à savoir la paroi du haut, et qui la propage jusqu'au récepteur
+positionné sur la paroi du bas. La mise en {\oe}uvre ici proposée est néanmoins
+particulière dans le sens où chaque chemin du problème couplé est d'abord
+échantillonné et conservé en totalité (section~\ref{subsec:chemin}). Son poids
+n'est calculé qu'a posteriori à partir du chemin ainsi construit
+(section~\ref{subsec:poids}). Cette proposition diffère d'un algorithme Monte
+Carlo plus conventionnel où la position et la direction courante du chemin ne
+sont que des données locales à chaque étape de sa construction; son poids étant
+mis à jour si nécessaire à chacune de ces étapes. Ce choix singulier est dicté
+par la volonté de garder à tout instant une vue d'ensemble du problème pour
+s'éviter un travail d'abstraction et ainsi faciliter l'écriture analogue de
+notre algorithme. Une démarche adaptée en raison de la configuration simplifiée
+à laquelle nous nous intéressons.
<<fonction de réalisation>>=
static res_T
@@ -428,18 +422,18 @@ exit:
}
@
-\paragraph{}
Notre fonction de réalisation prends en entrée un générateur de nombres
aléatoires ([[rng]]) et un pointeur vers les données du système ([[scene]]).
-Dans la variable [[w]] sera renvoys le poids de la sensibilité a $\PI$.
+Dans la variable [[w]] sera renvoyé le poids de la sensibilité a $\PI$.
\subsection{Le chemin}
\label{subsec:chemin}
-\paragraph{}
-On commence par échantillonner la surface de la source de sensibilité $A_h$
-point de départ de notre chemin de sensibilité complété ensuite par un chemin
-de dérivée spatiale dont la combinaison est le chemin du problème couplé.
+Pour construire un chemin du problème couplé on échantillonne d'abord un chemin
+de sensibilité partant d'une position quelconque sur la surface de la source de
+sensibilité $A_h$. Ce chemin est alors complété par l'échantillonnage d'un
+chemin de dérivée spatiale dont la couplage avec le chemin de sensibilité forme
+un chemin du problème couplé.
<<échantillonner un chemin du problème couplé>>=
<<échantillonner une position sur la source de sensibilité>>
@@ -447,14 +441,14 @@ de dérivée spatiale dont la combinaison est le chemin du problème couplé.
<<échantillonner un chemin de dérivée spatiale>>
@
-\paragraph{}
-On utilise la fonction [[sgs_geometry_sample_sensibility_source]] pour
-échantillonner uniformément un point sur la surface émettrice de sensibilité et
-on stocke dans les variables [[pos_h]] et [[normal_h]] sa position et la
-normale correspondante. On récupère également dans [[surf_A_h]]
-l'identifiant de la surface que l'on vient d'échantillonner, dans notre cas la
-surface supérieure $A_h$ identifié dans le code par la constante
-[[SGS_SURFACE_Z_MAX]] (voir figure~\ref{fig:configuration}).
+Comme point de départ du chemin du problème couplé, on commence donc par
+échantillonner uniformément une point sur la surface émettrice de sensibilité à
+l'aide de la fonction [[sgs_geometry_sample_sensibility_source]] et on stocke
+dans les variables [[pos_h]] et [[normal_h]] sa position et la normale
+correspondante. On récupère également dans [[surf_A_h]] l'identifiant de la
+surface que l'on vient d'échantillonner, dans notre cas la surface supérieure
+$A_h$ identifié dans le code par la constante [[SGS_SURFACE_Z_MAX]] (voir
+figure~\ref{fig:configuration}).
<<échantillonner une position sur la source de sensibilité>>=
/* Sample the sensitivity emissive surface */
@@ -464,20 +458,17 @@ d3_set(normal_h, frag.normal);
surf_A_h = frag.surface; /* must be SGS_SURFACE_Z_MAX */
@
-\paragraph{}
-On rappelle que les sources de sensibilité proviennent des paroies perturbées
+On rappelle que les sources de sensibilité proviennent des parois perturbées
par une modification du paramètre $\PI$. En toute hypothèse, toute source de
-sensibilité incidente à $A_h$ serait réfléchie spéculairement. Or, dans notre cas,
-nous n'avons qu'une seule source de sensibilité, la surface $A_h$, et par
-conséquent nous n'avons pas à tenir compte de ces sensibilités réfléchies. Ci
-après, nous ne construisons donc que le chemin qui propage l'émission de
-sensibilité par $A_h$.
-
-\paragraph{} Pour cela, nous commençons par échantilloner une direction
-d'émission lambertienne [[dir_emit_h]] autour de la normale [[normal_h]] de la
-surface $A_h$. Nous lançons alors un chemin dans cette direction jusqu'à
-rencontré une intersection avec une géométrie, une intersection stockée dans
-la variable [[hit0]].
+sensibilité incidente à $A_h$ serait réfléchie de façon spéculaire. Or, dans
+notre cas, nous n'avons qu'une seule source de sensibilité, la surface $A_h$
+elle-même, et par conséquent nous n'avons pas à tenir compte de ces
+sensibilités réfléchies. Nous n'échantillons donc que le seul chemin qui
+propage l'émission de sensibilité par $A_h$. Ce chemin sera notre chemin de
+sensibilité. Pour cela, il suffit d'échantillonner une direction d'émission
+lambertienne [[dir_emit_h]] autour de la normale [[normal_h]] de la surface
+$A_h$ et de lancer un rayon dans cette direction. Nous stockons dans [[hit0]],
+l'intersection de ce rayon avec la géométrie.
<<échantillonner un chemin de sensibilité>>=
/* Sample the cosine weighted sampling of the emissive direction */
@@ -486,7 +477,6 @@ ssp_ran_hemisphere_cos(rng, normal_h, dir_emit_h, NULL);
TRACE_RAY(pos_h, dir_emit_h, surf_A_h, &hit0);
@
-\paragraph{}
La source de sensibilité est donnée dans la condition à la limite décrite par
l'équation~\ref{eq:clsensib}. Elle dépend de la dérivée spatiale selon
$\vec{\chi}$ incidente dans la direction spéculaire $\vec{\omega}_{spec}$ et de
@@ -494,52 +484,48 @@ la dérivée spatiale selon $\vec{u}$ incidente à la même direction spéculair
Ces contributions à l'émission de sensibilité ne sont pas connues et sont ici
échantillonnées par double \textit{randomization}. Comme ces deux dérivées
spatiales sont incidentes à la même direction $\vec{\omega}_{spec}$ nous
-pouvons nous contanter de ne suivre qu'un seul chemin dans cette direction.
-
-\paragraph{}
-Nous calculons $\vec{\omega}_{spec}$ ([[dir_spec_h]]) par réflexion spéculaire
-de la direction d'émission $\vec{\omega}$ ([[dir_emit_h]]) avant de suivre un
-chemin dans cette direction jusqu'à l'intersection avec une surface stockée
-dans [[hit1]].
+pouvons nous contenter de ne suivre qu'un seul chemin dans cette direction. Ce
+chemin sera notre chemin de dérivée spatiale. Pour échantillonner ce chemin
+nous calculons d'abord $\vec{\omega}_{spec}$ ([[dir_spec_h]]) par réflexion
+spéculaire de la direction d'émission $\vec{\omega}$ ([[dir_emit_h]]) avant de
+lancer un rayon dans cette direction jusqu'à l'intersection [[hit1]] avec une
+surface .
<<échantillonner un chemin de dérivée spatiale>>=
-/* Compute the specular direction */
+/* Calculer la direction spéculaire à dir_emit_h */
reflect(dir_spec_h, dir_emit_h, normal_h);
-/* Trace the specular ray */
+/* Tracer le rayon spéculaire partant de surf_A_h */
TRACE_RAY(pos_h, dir_spec_h, surf_A_h, &hit1);
@
\subsection{Le poids}
\label{subsec:poids}
-\paragraph{}
-On rappelle que dans cet exemple un chemin du problème couplé est composé d'un
-chemin de sensibilité et d'un chemin de dérivée spatiale, chacun d'entre eux se
-résumant à un segment dont l'origine commune se situe sur la paroi du haut. Le
-chemin couplé a une contribution \emph{nulle} si le chemin de sensibilité
-n'atteint pas le récepteur ou si le chemin de dérivé spatiale n'atteint pas la
-source radiative, à savoir la paroi de droite.
+Dans notre problème, un chemin du problème couplé est composé d'un chemin de
+sensibilité et d'un chemin de dérivée spatiale, chacun d'entre eux se résumant
+à un segment dont l'origine commune se situe sur la paroi du haut source de
+sensibilité. Or, on peut dès à présent déterminer qu'un chemin couplé aura une
+contribution \emph{nulle} si le chemin de sensibilité n'atteint pas le
+récepteur ou si le chemin de dérivé spatiale n'atteint pas la source radiative,
+à savoir la paroi de droite.
<<initialiser le poids>>=
sensib = 0;
@
-
<<échantillonner un chemin de sensibilité>>=
if(!hit_receiver(scene, pos_h, dir_emit_h, &hit0)) {
goto exit;
}
@
-
<<échantillonner un chemin de dérivée spatiale>>=
if(!hit_source(scene, pos_h, dir_spec_h, &hit1)) {
goto exit;
}
@
-\paragraph{}
-En conséquence, dans la suite de la fonction, nous pouvons assumer que nous
+En conséquence nous pouvons assumer dans la suite de la fonction que nous
n'aurons à calculer le poids que des seuls chemin couplés dont la contribution
-est non nulle. [[hit1]] représente donc une intersection sur la source
+est non nulle. Dès lors, [[hit1]] représente une intersection sur la source
radiative. On stocke dans [[normal_d]] la normale de la paroi correspondante
dont on aura besoin pour le calcul du poids. De même, on initialise la variable
[[dir_emit_d]] à $-\vec{\omega}_s$, cette direction nous sera également utile
@@ -550,10 +536,9 @@ d3_normalize(normal_d, hit1.normal);
d3_minus(dir_emit_d, dir_spec_h);
@
-\paragraph{}
-Dans le problème couplé la contribution du chemin (poids MC) va s'exprimer à
-travers la condition à la limite de sensibilité (équation \ref{eq:clsensib}) et
-des sources de chacun de ses couplages.
+Dans notre problème couplé, la contribution du chemin, {\ie} le poids Monte
+Carlo, va s'exprimer à travers la condition à la limite de sensibilité
+(équation \ref{eq:clsensib}) et des sources de chacun de ses couplages.
<<calcul du poids>>=
<<décomposition du vecteur de déformation $\vec{\chi}$>>
@@ -564,7 +549,6 @@ des sources de chacun de ses couplages.
<<calculer le poids de sensibilité>>
@
-\paragraph{}
La décomposition du vecteur de déformation $\vec{\chi}$ permet d'obtenir le
vecteur tangent $\vec{u}$ nécessaire dans l'expression de la source de
sensibilité et de ses dérivée surfaciques (équation \ref{eq:clsensib}).
@@ -573,31 +557,29 @@ sensibilité et de ses dérivée surfaciques (équation \ref{eq:clsensib}).
decomposition(chi, normal_h, dir_emit_h, &proj_chi_h);
@
-\paragraph{}
Étant donné que le coefficient de réflection n'est défini qu'en frontière, à
savoir sur un plan en deux dimensions, calculer la dérivée surfacique de $\rho$
-revient à travailler dans le plan. La dérivée surfacique de $\rho$ est le
+revient à travailler dans le plan. Et cette dérivée surfacique est le
produit scalaire entre le gradient surfacique de $\rho$ et la direction de
dérivation $\vec{u}$ transformée dans ce plan ([[u_2d]]).
<<calcul de la dérivée surfacique de $\rho$>>=
<<récupérer le gradient surfacique de $\rho$>>
-/* Transform u in XY plane */
+/* Transformer u dans le plan XY */
u_2d[0] = proj_chi_h.u[X];
u_2d[1] = proj_chi_h.u[Y];
-/* Surface derivative of rho */
+/* Calculer la dérivée surfacique de rho */
d_rho = d2_dot(grad_rho_2d, u_2d);
@
-\paragraph{}
-Pour récupérer $\rho$ et son gradient, il suffit de transformer dans le plan la
-position d'émission [[pos_h]], et d'interroger les données associées à la
-position ainsi transformée ([[pos_h_2d]]).
+Pour récupérer $\rho$ et son gradient, il nous suffit de transformer dans le
+plan la position d'émission [[pos_h]], et d'interroger les données associées à
+la position ainsi transformée ([[pos_h_2d]]).
<<récupérer le gradient surfacique de $\rho$>>=
-/* Transform pos_h in XY plane */
+/* Transformer pos_h dans le plan XY */
pos_h_2d[0] = pos_h[X];
pos_h_2d[1] = pos_h[Y];
@@ -605,8 +587,7 @@ rho = get_rho(scene, pos_h_2d);
get_grad_rho(scene, pos_h_2d, grad_rho_2d);
@
-\paragraph{}
-Dans notre cas, la sensibilité est couplée à deux dérivées spatiales (selon
+On rappelle que la sensibilité est couplée à deux dérivées spatiales (selon
$\vec{\chi}$ et $\vec{u}$) dont les sources sont données par les équations
\ref{eq:cl_duL_haut}, \ref{eq:cl_duL_droite}, \ref{eq:cl_dchiL_haut} et
\ref{eq:cl_dchiL_droite}.
@@ -618,17 +599,15 @@ $\vec{\chi}$ et $\vec{u}$) dont les sources sont données par les équations
<<calcul de la dérivée surfacique de $Sb$ dans la direction $\vec{u}_{cs}$>>
@
-\paragraph{}
Sur la paroi de droite, la décomposition du vecteur de déformation $\vec{\chi}$
permet d'obtenir le vecteur tangent $\vec{u}$ nécessaire dans l'expression de
la source de de la dérivée spatiale dans la direction $\vec{\chi}$ et de sa
-dérivée surfaciques (équation \ref{eq:cl_dchiL_droite}).
+dérivée surfacique (équation \ref{eq:cl_dchiL_droite}).
<<décomposition du vecteur $\vec{\chi}$>>=
decomposition(chi, normal_d, dir_emit_d, &proj_chi_d);
@
-\paragraph{}
De la même façon, la décomposition du vecteur $\vec{u}$ permet d'obtenir le
vecteur tangent $\vec{u}_e$ nécessaire dans l'expression de la source de la
dérivée spatiale dans la direction $\vec{u}$ et de sa dérivée surfacique
@@ -638,17 +617,16 @@ dérivée spatiale dans la direction $\vec{u}$ et de sa dérivée surfacique
decomposition(proj_chi_h.u, normal_d, dir_emit_d, &proj_uh_d);
@
-\paragraph{}
La dérivée surfacique de $S_b$ dans la direction $\vec{u}_{e}$ ([[dSb_uhd]])
est le produit scalaire entre le gradient surfacique de $S_b$ et la direction
de dérivation $\vec{u}_{e}$ transformée dans le plan de la paroi de droite
-([[u_hd_2d]]). Pour effectuer ce calcul nous devons au préalable récupérer le
-gradient de $S_b$ ([[grad_Sb_2d]]). Pour cela il suffit de transformer dans le
-plan de la paroi de droite la position d'émission [[pos_d]], et
-d'interroger les données associées à la position ainsi transformée
-([[pos_d_2d]]). Nous en profitons au passage pour récupérer $S_b$ qui
-nous sera utile pour le calcul du poids. Nous rappelons enfin que dans notre
-situation les deux dérivées spatiales $\partial_{\vec{\chi}} I$ et
+([[u_hd_2d]]). Mais pour effectuer ce calcul nous devons au préalable récupérer
+le gradient de $S_b$ ([[grad_Sb_2d]]). Pour cela il nous suffit là encore de
+transformer dans le plan de la paroi de droite la position d'émission
+[[pos_d]], et d'interroger les données associées à la position ainsi
+transformée ([[pos_d_2d]]). Et nous en profitons au passage pour récupérer
+$S_b$ qui nous sera utile pour le calcul du poids. Pour rappel, dans notre
+configuration les deux dérivées spatiales $\partial_{\vec{\chi}} I$ et
$\partial_{\vec{u}} I$ partagent une même position d'émission ([[pos_d]]).
<<calcul de la dérivée surfacique de $Sb$ dans la direction $\vec{u}_e$>>=
@@ -673,8 +651,7 @@ u_hd_2d[1] = proj_uh_d.u[Z];
dSb_uhd = d2_dot(grad_Sb_2d, u_hd_2d);
@
-\paragraph{}
-Il ne reste plus qu'à calculer la dérivée surfacique de $S_b$ dans la direction
+Ne reste plus qu'à calculer la dérivée surfacique de $S_b$ dans la direction
$\vec{u}_{cs}$ ([[dSb_uchid]]) comme étant le produit scalaire entre le
gradient surfacique de $S_b$ et la direction $\vec{u}_{cs}$ transformée dans le
plan de la paroi de droite ([[u_chid_2d]]).
@@ -688,13 +665,13 @@ u_chid_2d[1] = proj_chi_d.u[Z];
dSb_uchid = d2_dot(grad_Sb_2d, u_chid_2d);
@
-Le poids de sensibilité correspond à la contribution portée par le chemin du
-problème couplé, soit les sources de dérivées spatiales propagées jusqu'à la
-paroi du haut puis intégrées dans les sources de sensibilité propagées ensuite
-vers le récepteur. Cette contribution est ensuite multipliée par la surface
-$A_h$ et l'angle $\pi$ ([[PI]]) étant donné l'échantillonnage des densités de
-probabilités de la position sur la surface et de la direction dans l'hémisphère
-sortante de la paroi.
+On est alors en mesure d'évaluer le poids de sensibilité comme la contribution
+portée par le chemin du problème couplé, soit les sources de dérivées spatiales
+propagées jusqu'à la paroi du haut puis intégrées dans les sources de
+sensibilité propagées ensuite vers le récepteur. Cette contribution est
+ensuite multipliée par la surface $A_h$ et l'angle $\pi$ ([[PI]]) étant donné
+l'échantillonnage des densités de probabilités de la position sur la surface et
+de la direction dans l'hémisphère sortante de la paroi.
<<calculer le poids de sensibilité>>=
/* Calcul de la contribution du chemin couplé */
@@ -713,11 +690,10 @@ w[0] = sensib;
\subsection{Variables locales et macro}
-\paragraph{}
Lors de l'échantillonnage des chemins (section~\ref{subsec:chemin}) nous nous
sommes appuyé sur la fonction [[TRACE_RAY]] nous permettant de lancer un rayon
dans la scène. Cette fonction est en réalité un macro, locale à la fonction,
-qui encapsule l'appel à la fonction qui lance le rayon. En plus de l'origine et
+qui encapsule l'appel à la fonction qui lance un rayon. En plus de l'origine et
de la direction du rayon, cette fonction nécessite en entrée une plage des
distances d'intersection possible ([[range]]), dans notre cas toujours définie
à $[0, \infty]$. À noter également le paramètre d'entrée [[StartFrom]] qui
@@ -742,7 +718,7 @@ rayon avec le triangle dont il est issu.
\paragraph{}
Enfin, nous déclarons ci-après l'ensemble des variables locales nécessaires à
-la réalisation que nous venons d'écrire:
+notre [[<<fonction de réalisation>>]]:
<<données locales à la fonction de réalisation>>=
/* Variables de la source de sensibilité */