{-# 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 a :: Plucker a
a == :: Coincides a -> Coincides a -> Bool
== Line b :: 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 a :: Plucker a
a == Ray b :: 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 a :: Plucker a
a == Line b :: 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 a :: Plucker a
a == Ray b :: 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