{-# LANGUAGE GADTs #-}
module Linear.Plucker.Coincides
( Coincides(..)
) where
import Linear.Epsilon
import Linear.Plucker
data Coincides a where
Line :: (Epsilon a, Fractional a) => Plucker a -> Coincides a
Ray :: (Epsilon a, Fractional a, Ord a) => Plucker a -> Coincides a
instance Eq (Coincides a) where
Line Plucker a
a == :: Coincides a -> Coincides a -> Bool
== Line Plucker a
b = Plucker a -> Plucker a -> Bool
forall a.
(Epsilon a, Fractional a) =>
Plucker a -> Plucker a -> Bool
coincides Plucker a
a Plucker a
b
Line Plucker a
a == Ray Plucker a
b = Plucker a -> Plucker a -> Bool
forall a.
(Epsilon a, Fractional a) =>
Plucker a -> Plucker a -> Bool
coincides Plucker a
a Plucker a
b
Ray Plucker a
a == Line Plucker a
b = Plucker a -> Plucker a -> Bool
forall a.
(Epsilon a, Fractional a) =>
Plucker a -> Plucker a -> Bool
coincides Plucker a
a Plucker a
b
Ray Plucker a
a == Ray Plucker a
b = Plucker a -> Plucker a -> Bool
forall a.
(Epsilon a, Fractional a, Ord a) =>
Plucker a -> Plucker a -> Bool
coincides' Plucker a
a Plucker a
b