%% syntaxe : A B C D E F interquadrilatereddroite --> M, le point
%% d'intersection du quadrilatere ABCD avec la demi droite [EF). Le
%% point A est suppose a l'interieur du quadrilatere.
/interquadrilatereddroite {
9 dict begin
/F defpoint
/O defpoint
/D defpoint
/C defpoint
/B defpoint
/A defpoint
%% les cas marginaux
A B distance 0 eq
A D distance 0 eq or {
A C milieu
} {
/d {O F} def
/fini false def
A B d paralleles? not {
A B d interdroite /M defpoint
O M vecteur d vecteur scalprod 0 gt {
M A B pointsurAB? {
/fini true store
} if
} if
} if
A D d paralleles? not fini not and {
A D d interdroite /M defpoint
O M vecteur d vecteur scalprod 0 gt {
M A D pointsurAB? {
/fini true store
} if
} if
} if
C B d paralleles? not fini not and {
C B d interdroite /M defpoint
O M vecteur d vecteur scalprod 0 gt {
M C B pointsurAB? {
/fini true store
} if
} if
} if
C D d paralleles? not fini not and {
C D d interdroite /M defpoint
} if
M
} ifelse
end
} def
|