module Geometry.Hit
  ( Hit(..)
  ) where

import RIO

import Geomancy (Vec3)

data Hit = Hit
  { Hit -> Float
distance :: Float
  , Hit -> Float
cosine   :: Float
  , Hit -> Vec3
position :: Vec3
  }
  deriving (Hit -> Hit -> Bool
(Hit -> Hit -> Bool) -> (Hit -> Hit -> Bool) -> Eq Hit
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Hit -> Hit -> Bool
$c/= :: Hit -> Hit -> Bool
== :: Hit -> Hit -> Bool
$c== :: Hit -> Hit -> Bool
Eq, Eq Hit
Eq Hit
-> (Hit -> Hit -> Ordering)
-> (Hit -> Hit -> Bool)
-> (Hit -> Hit -> Bool)
-> (Hit -> Hit -> Bool)
-> (Hit -> Hit -> Bool)
-> (Hit -> Hit -> Hit)
-> (Hit -> Hit -> Hit)
-> Ord Hit
Hit -> Hit -> Bool
Hit -> Hit -> Ordering
Hit -> Hit -> Hit
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Hit -> Hit -> Hit
$cmin :: Hit -> Hit -> Hit
max :: Hit -> Hit -> Hit
$cmax :: Hit -> Hit -> Hit
>= :: Hit -> Hit -> Bool
$c>= :: Hit -> Hit -> Bool
> :: Hit -> Hit -> Bool
$c> :: Hit -> Hit -> Bool
<= :: Hit -> Hit -> Bool
$c<= :: Hit -> Hit -> Bool
< :: Hit -> Hit -> Bool
$c< :: Hit -> Hit -> Bool
compare :: Hit -> Hit -> Ordering
$ccompare :: Hit -> Hit -> Ordering
Ord, Int -> Hit -> ShowS
[Hit] -> ShowS
Hit -> String
(Int -> Hit -> ShowS)
-> (Hit -> String) -> ([Hit] -> ShowS) -> Show Hit
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Hit] -> ShowS
$cshowList :: [Hit] -> ShowS
show :: Hit -> String
$cshow :: Hit -> String
showsPrec :: Int -> Hit -> ShowS
$cshowsPrec :: Int -> Hit -> ShowS
Show)