module type P =`sig`

..`end`

Implemented by all point types.

`type `

t

The type for points.

`val dim : ``int`

`type `

mh

`val o : ``t`

`o`

is the point whose coordinates are all zero.`val mid : ``t -> t -> t`

`mid p q`

is the mid point `(p + q)/2`

.`val tr : ``mh -> t -> t`

`tr m p`

is the
affine
transform in
homogenous `Gg.P.dim`

space of the `p`

by `m`

.
**Note.** Since `m`

is supposed to be affine the function
ignores the last row of `m`

. `p`

is treated as a finite point
(its last coordinate in homogenous space is 1).