# COORDINATE SYSTEMSVIEW OBJECTSWINDOWSSTEROSCOPY

## COORDINATE SYSTEMS

### Absolute system

Databases are captured in a coordinate system called absolute whose center is at the center of the screen, the axis of x is directed toward the right, the axis y is directed downwards and the axis of z is directed towards the back, and the triad is direct, the z measuring a distance to the eye.
Notes:
1) This orientation was chosen so that the triad is direct with z-coordinate increasing as one moves away from the center.
2) This is system designated by (A, xa, ya, za).

### Eye system

The stage can be watched by a fictional eye center of a coordinate system (O, xo, yo, zo) defined by:
The coordinates of the eye.
A point F defining the Ozo axis.
The roll = angle of axis xo with the plane (xa,za).

### Perspective system

A screen, disposed perpendicularly to the axis and Ozo distance d > 0 from the eye is used as the projection plane.
The focal length is defined by f = (side of the screen) / d.
The perspective system is defined by:
Its center E = center of the screen
Its axis x directed towards the right.
Its axis y directed to the bottom.

### Screen system

It is the system of displayable pixels in the screen.          1) Par défaut la perspective est une projection conique (de sommet l´eye) sur le plan du tableau: ´yes pers´ ou ´pers(1)´
2) ´pers(0)´ (ou ´no pers´) permet de passer en perspective cavalière, qui est une projection cylindrique selon l´axis joignant l´eye au point de visée
3) ´pers(2)´ permet de définir une perspective courbe (un radius joignant l´eye O a un point M est remplacé par l´arc de cercle construit sur O,M,F)
4) An arbitrary perspective may be defined with matrices 4*4 for express coordinates from one system to another: de changement de repères et de mise en perspective:

abs eye
eye pers
abs pers view
eye abs view
pers abs view
edit(abs eye view 1): donne une idée de la forme de l´une d´elles
5) Une perspective procédurale peut être définie en passant des noms de fonctions (au lieu de matrices) aux commandes:
abs eye view(num) = "nom de fonction"
eye pers view(num) = "nom de fonction"
pers screen view(num) = "nom de fonction"
screen abs view(num) = "nom de fonction"
pers abs view(num) = "nom de fonction"
De telles fonctions sont de la forme:
toto()
{
p = poi /* p = point dans le 1er repere */
x = p[0]; y = p[1]; z = p[2]
xp = ... /* Calcul du point dans le 2eme repere */
yp = ...
zp = ...
validate pers(xp,yp,zp) /* Passe le resultat */
}
6) ´pers(num)´ avec num < 0 définit une perspective est en C dans la fonction pers_utilisateur() du fichier utilb.c
7) validate pers vol(num): Permet de générer le volume déformé par la perspective, vu d´un autre eye on obtient des effets étranges...

## STEROSCOPY

### Principe

La vision binocculaire procure une impression de relief en produisant 2 images, légèrement décalées, d´une même scène
Tout système réalisant 2 telles images, chacune view par un eye, est dir stéréoscopique
Par exemple une image rouge et une image verte, affichées sur le même écran, sont regardées avec des lunettes comportant un verre rouge et un verre vert.
Ou 2 images sont projetées alternativement et sont vues avec des verres polarisés.
La fonction stereo permet de produire facilement 2 telles images

### La fonction stereo

`stereo dist(d)eye(xo,yo,zo)aim(xf,yf,zf)col(r1,v1,b1,r2,v2,b2);`
Construit les vues 1 et 2 positionnées en (xo,yo,zo) et regardant vers (xf,yf,zf), decalées de d (distance des 2 yeux) et de couleurs respectives (r1,v1,b1) et (r2,v2,b2)
Remarques:
1) Lors d´un affichage, la base de données est affichée dans la couleur (r1,v1,b1) view de 1, puis dans la couleur (r2,v2,b2) view de 2.

La fonction hole image permet de mélanger 2 images sur le même écran:
`hole image(1,2);` affiche dans la fenêtre courante les images numéros 1 et 2.