Ce chapitre regroupe l'ensemble des fonctions de PHIGURE permettant de définir des plans de coupe servant à générer des isolignes sur le plan ou servant à ne visualiser que les parties des primitives dans le demi espace delimité par le plan. Cette dernière notion est appelée modelling clipping par la norme PHIGS. Pour plus de détails sur cette notion, il est conseillé de se reporter à la documentation de GPHIGS.
Un plan géométrique peut être défini par PHIGURE de 6 façons différentes grâce à l'utilisation de la structure C suivante :
typedef struct {
Tplane_type type;
Tref_type ref;
Pfloat distance;
Ppoint3 reference_point;
union {
struct {
Pvec3 vector;
} orthogonal;
struct {
Pvec3 v1;
Pvec3 v2;
} vector;
struct {
Ppoint3 p1;
Ppoint3 p2;
} point;
struct {
Pfloat teta;
Pfloat phi;
} angle;
} geometry;
}Tplane;
où
type représente l'une des 6 méthodes de
définition du plan :
typedef enum {
TPLANE_ORTHOGONAL_VECTOR,
TPLANE_2_VECTORS,
TPLANE_3_POINTS,
TPLANE_ANGLE_Y,
TPLANE_ANGLE_X,
TPLANE_ANGLE_Z
}Tplane_type;
où ref permet de savoir si la définition est relative à l'espace utilisateur ou à l'espace [0-1][0-1][0-1]
typedef enum {
TRELATIVE_WC,
TRELATIVE_01
}Tref_type;
où Pvec est le type vecteur 2D de PHIGURE
typedef struct {
Pfloat delta_x;
Pfloat delta_y;
}Pvec;
où Pvec3 est le type vecteur 3D de PHIGURE
typedef struct {
Pfloat delta_x;
Pfloat delta_y;
Pfloat delta_z;
}Pvec3;
où Ppoint3 est le type point de l'espace 3D de PHIGURE
typedef struct {
Pfloat x;
Pfloat y;
Pfloat z;
}Ppoint3;
Ces différentes définitions de plan sont utilisées par les fonctions suivantes :
Si type = TPLANE_ORTHOGONAL_VECTOR
Le plan est défini par un vecteur N (vector) orthogonal au plan, par un point O (reference_point) appartenant à l'axe orthogonal au plan, et par la distance D (distance) du plan au point O. D est en fait l'abscisse curviligne le long de l'axe orthogonal du point intersection entre le plan et l'axe. L'origine des abscisses étant le point O et l'axe étant orienté positivement par le vecteur N. (Si D est nulle, le point O appartient au plan).
plan ->geometry.orthogonal.vector vecteur N
plan ->geometry.reference_point point O
plan ->geometry.distance distance D
De plus
si plan->ref == TRELATIVE_WC alors D, O et N sont relatifs à l'espace utilisateur
si plan->ref == TRELATIVE_01 alors D, O et N sont relatifs à l'espace homogène [0-1][0-1][0-1]
Si type = TPLANE_2_VECTORS
Le plan est défini par 2 vecteurs v1 et v2 définissant un plan parallèle, par un point O (reference_point), et par la distance D (distance) du plan au point O . Le produit vectoriel de V1 et V2 définit la direction et l'orientation de l'axe orthogonal au plan. (V1 et V2 ne doivent pas être colinéaires). Comme pour la première définition de plan, O est un point appartenant à l'axe, et D est l'abscisse curviligne le long de l'axe du point intersection entre le plan et l'axe. L'origine des abscisses étant le point O et l'axe étant orienté positivement par le vecteur V1[and]V2. (Si D est nulle, le point O appartient au plan).

plan ->geometry.vector.v1 vecteur v1
plan ->geometry.vector.v2 vecteur v2
plan ->geometry.reference_point point O
plan ->geometry.distance distance D
De plus
si plan->ref == TRELATIVE_WC alors D, O, v1 et v2 sont relatifs à l'espace utilisateur
si plan->ref == TRELATIVE_01 alors D, O, v1 et v2 sont relatifs à l'espace homogène [0-1][0-1][0-1]
Si type = TPLANE_3_POINTS
Le plan est défini par 3 points O (reference_point) p1 et p2 définissant un plan parallèle et par la distance D (distance) du plan au point P1. Si on appelle V1 le vecteur OP1 et V2 le vecteur OP2 alors le produit vectoriel de V1 et V2 définit la direction et l'orientation de l'axe orthogonal au plan. (V1 et V2 ne doivent pas être colinéaires). Cet axe passe par le point O . Ce dernier est l'origine des abscisses le long de l'axe qui est orienté positivement par le vecteur V1[and]V2. (Si D est nulle, les points O, P1 et P2 appartiennent au plan).

plan ->geometry.point.p1 point p1
plan ->geometry.point.p2 point p2
plan ->geometry.reference_point point O
plan ->geometry.distance distance D
De plus
si plan->ref == TRELATIVE_WC alors D, O, p1 et p2 sont relatifs à l'espace utilisateur
si plan->ref == TRELATIVE_01 alors D, O, p1 et p2 sont relatifs à l'espace homogène [0-1][0-1][0-1]
Si type = TPLANE_ANGLE_X
Le plan est défini par un axe orthogonal orienté par deux angles [theta] et [phi] (teta et phi), par un point O (referecence_point) appartenant à l'axe orthogonal, et par la distance D (distance) du plan au point O.
[theta] est l'angle entre le plan YZ et l'axe orthogonal au plan. Il est compris entre -[pi]/2 et +[pi]/2. Si [theta] = ± [pi]/2 alors le plan défini est parallèle au plan YZ.
[phi] est l'angle entre l'axe Y et la projection de l'axe orthogonal sur le plan YZ. Il varie entre 0 et 2[pi]
D est l'abscisse curviligne le long de l'axe orthogonal du point intersection entre le plan et l'axe. L'origine des abscisses étant le point O et l'axe étant orienté positivement par un point fictif de coordonnées sphériques (1, [theta], [phi]). (Si D est nulle, le point O appartient au plan).

plan ->geometry.angle.teta angle [theta]
plan ->geometry.angle.phi angle [phi]
plan ->geometry.reference_point point O
plan ->geometry.distance distance D
De plus
si plan->ref == TRELATIVE_WC alors D, O, [theta] et [phi] sont relatifs à l'espace utilisateur
si plan->ref == TRELATIVE_01 alors D, O, [theta] et [phi] sont relatifs à l'espace homogène [0-1][0-1][0-1]
Si type = TPLANE_ANGLE_Y
Le plan est défini par un axe orthogonal orienté par deux angles [theta] et [phi] (teta et phi), par un point O (reference_point) appartenant à l'axe orthogonal, et par la distance D (distance) du plan au point O.
[theta] est l'angle entre le plan ZX et l'axe orthogonal au plan. Il est compris entre -[pi]/2 et +[pi]/2. Si [theta] = ± [pi]/2 alors le plan défini est parallèle au plan ZX.
[phi] est l'angle entre l'axe Z et la projection de l'axe orthogonal sur le plan ZX. Il varie entre 0 et 2[pi]
D est l'abscisse curviligne le long de l'axe orthogonal du point intersection entre le plan et l'axe. L'origine des abscisses étant le point O et l'axe étant orienté positivement par un point fictif de coordonnées sphériques (1, [theta], [phi]). (Si D est nulle, le point O appartient au plan).

plan ->geometry.angle.teta angle [theta]
plan ->geometry.angle.phi angle [phi]
plan ->geometry.reference_point point O
plan ->geometry.distance distance D
De plus
si plan->ref == TRELATIVE_WC alors D, O, [theta] et [phi] sont relatifs à l'espace utilisateur
si plan->ref == TRELATIVE_01 alors D, O, [theta] et [phi] sont relatifs à l'espace homogène [0-1][0-1][0-1]
Si type = TPLANE_ANGLE_Z
Le plan est défini par un axe orthogonal orienté par deux angles [theta] et [phi] (teta et phi), par un point O (reference_point) appartenant à l'axe orthogonal, et par la distance D (distance) du plan au point O.
[theta] est l'angle entre le plan XY et l'axe orthogonal au plan. Il est compris entre -[pi]/2 et +[pi]/2. Si [theta] = ± [pi]/2 alors le plan défini est parallèle au plan XY.
[phi] est l'angle entre l'axe X et la projection de l'axe orthogonal sur le plan XY. Il varie entre 0 et 2[pi]
D est l'abscisse curviligne le long de l'axe orthogonal du point intersection entre le plan et l'axe. L'origine des abscisses étant le point O et l'axe étant orienté positivement par un point fictif de coordonnées sphériques (1, [theta], [phi]). (Si D est nulle, le point O appartient au plan).

plan ->geometry.angle.teta angles [theta]
plan ->geometry.angle.phi angles [phi]
plan ->geometry.reference_point point O
plan ->geometry.distance distance D
De plus
si plan->ref == TRELATIVE_WC alors D, O, [theta] et [phi] sont relatifs à l'espace utilisateur
si plan->ref == TRELATIVE_01 alors D, O, [theta] et [phi] sont relatifs à l'espace homogène [0-1][0-1][0-1]