Converted from roc to curvature
This commit is contained in:
@@ -85,9 +85,10 @@ hitTest Stop{_outsideRadius} (Ray pos dir) =
|
||||
where dz = pos ^. _z / dir ^. _z
|
||||
npos = pos ^-^ (dir ^* dz)
|
||||
pass = quadrance (npos ^. _xy) <= _outsideRadius ^ 2
|
||||
hitTest Surface{_roc, _outsideRadius} ray@(Ray pos dir) =
|
||||
hitTest Surface{_curvature, _outsideRadius} ray@(Ray pos dir) =
|
||||
toMaybe (hit1 && hit2) (Ray npos dir, Just normal)
|
||||
where origin = pos & _z -~ _roc
|
||||
where _roc = 1/_curvature
|
||||
origin = pos & _z -~ _roc
|
||||
!a = dir `dot` dir
|
||||
!b = (dir `dot` origin) * 2
|
||||
!c = (origin `dot` origin) - _roc ^ 2
|
||||
@@ -103,6 +104,10 @@ hitTest Surface{_roc, _outsideRadius} ray@(Ray pos dir) =
|
||||
!normal = if (normal0 ^. _z < 0) then -normal0 else normal0
|
||||
!npos = pos ^+^ dir ^* dist
|
||||
!hit2 = (quadrance $ npos ^. _xy) <= _outsideRadius^2
|
||||
hitTest ImagingPlane{_thickness} (Ray pos dir) =
|
||||
Just (Ray npos dir, Nothing)
|
||||
where dz = pos ^. _z / dir ^. _z - _thickness
|
||||
npos = pos ^-^ (dir ^* dz)
|
||||
|
||||
refract :: (Floating a, Ord a, Mode a, Scalar a ~ Double, Epsilon a) => BakedIOR -> V3 a -> Ray a -> Maybe (Ray a)
|
||||
refract (BakedIOR n1 n2) normal (Ray pos incident) =
|
||||
|
||||
Reference in New Issue
Block a user