Kyotaro HORIGUCHI <horiguchi.kyot...@lab.ntt.co.jp> writes:
> I happend to see a strange geometric calcualtion on master/HEAD.
> Instead, calculating inner product of the two direction vectors
> works as expected.
> (l1->A * l2->A) + (l1->B * l2->B) == 0
This seems to be a strict subset of the changes in Emre Hasgeli's
latest geometric-types patch. I'm disinclined to commit it unless
that patch gets rejected, as it'll just require Emre to rebase again.
However, for either patch, I'm a bit concerned about using FPzero()
on the inner product result. To the extent that the EPSILON bound
has any useful meaning at all, it needs to mean a maximum difference
between two coordinate values. The inner product has units of coordinates
squared, so it seems like EPSILON isn't an appropriate threshold there.
Possibly this objection is pointless, because I'm not at all sure that
the existing code is careful about how it uses FPeq/FPzero; perhaps
we're applying EPSILON to all manner of numbers that don't have units
of the coordinate space. But this won't help make it better.
regards, tom lane