DPOINT


    Documentation











[revenir à la page d'accueil]

DPOINT représente un point à la surface d'un objet de la scène 3D.


Un DPOINT est crée par la fonction :
    extern void dpoint_init(MODEL *model, DPOINT *point);

Le reste de l'interface est découpé en 3 parties :
  1. accesseurs aux propriétes du point,
  2. relations entre 2 points et,
  3. choix d'un autre point (par direction, etc.)

extern MATERIAL *dpoint_get_material_ptr(DPOINT *point);
    renvoie la matière associée au point.

extern float dpoint_brdf(DPOINT *point, VEC in, VEC out);
    renvoie la valeur de la brdf au point pour un coupe de directions incidente (in) et réfléchie (out).

extern float dpoint_brdf_3points(DPOINT *o, DPOINT *p, DPOINT *q);
    renvoie la valeur de la brdf au point pour un triplet de points. La lumière est émise par Q et réflechie par P vers O.


int dpoint_trace_ray(DPOINT *point, VEC w, DPOINT *q);
    détermine le point Q visible du point dans la direction w

int dpoint_visibility_ray(DPOINT *p, DPOINT *q);
    vérifie que les points P et Q sont visibles.


extern float dpoint_get_dWdA(DPOINT *p, DPOINT *q);
     calcule et renvoie le changement de mesure dW / dA entre les points P et Q.

extern float dpoint_get_G(DPOINT *p, DPOINT *q);
    calcule et renvoie le couplage géometrique, noté G(p q), entre les points P et G.


Les fonctions d'échantillonnages _sample_ sont couplées avec une fonction _weight_ qui calcule la probabilité d'un échantillon passé en paramètre.

extern void dpoint_sample_direction(DPOINT *point, VEC w, float *pw);
extern float dpoint_weight_direction(DPOINT *point, VEC w);
    échantillonnage selon une loi uniforme. La probabilité est exprimée sur les directions.
    sample_direction choisit une direction w et sa probabilité pw.
    weight_direction détermine la probabilite d'avoir généré la direction w.

extern void dpoint_sample_direction_cos(DPOINT *point, VEC w, float *pw);
extern float dpoint_weight_direction_cos(DPOINT *point, VEC w);
    échantillonnage selon une direction w proportionnelle au cosinus avec la normale du point. La probabilité est exprimée sur les directions.
    sample_direction_cos choisit la direction w et sa probabilité pw.
    weight_direction_cos détermine la probabilité d'avoir généré la direction w.


Les fonctions suivantes font la même chose mais renvoient le point Q visible dans la direction choisie et renvoient une probabilité exprimée sur les aires.

extern int dpoint_sample(DPOINT *point, DPOINT *q, float *pa);
extern float dpoint_weight(DPOINT *point, DPOINT *q);

extern int dpoint_sample_cos(DPOINT *point, DPOINT *q, float *pa);
extern float dpoint_weight_cos(DPOINT *point, DPOINT *q);