diagrams-lib-1.4.1.2: Embedded domain-specific language for declarative graphics

Copyright(c) 2013 diagrams-lib team (see LICENSE)
LicenseBSD-style (see LICENSE)
Maintainerdiagrams-discuss@googlegroups.com
Safe HaskellNone
LanguageHaskell2010

Diagrams.Trace

Contents

Description

"Traces", aka embedded raytracers, for finding points on the edge of a diagram. See Diagrams.Core.Trace for internal implementation details.

Synopsis

Types

data Trace v n :: (* -> *) -> * -> * #

Instances

Show (Trace v n) 

Methods

showsPrec :: Int -> Trace v n -> ShowS #

show :: Trace v n -> String #

showList :: [Trace v n] -> ShowS #

Ord n => Semigroup (Trace v n) 

Methods

(<>) :: Trace v n -> Trace v n -> Trace v n #

sconcat :: NonEmpty (Trace v n) -> Trace v n #

stimes :: Integral b => b -> Trace v n -> Trace v n #

Ord n => Monoid (Trace v n) 

Methods

mempty :: Trace v n #

mappend :: Trace v n -> Trace v n -> Trace v n #

mconcat :: [Trace v n] -> Trace v n #

Wrapped (Trace v n) 

Associated Types

type Unwrapped (Trace v n) :: * #

Methods

_Wrapped' :: Iso' (Trace v n) (Unwrapped (Trace v n)) #

(Additive v, Num n) => Transformable (Trace v n) 

Methods

transform :: Transformation (V (Trace v n)) (N (Trace v n)) -> Trace v n -> Trace v n #

(Additive v, Ord n) => Traced (Trace v n) 

Methods

getTrace :: Trace v n -> Trace (V (Trace v n)) (N (Trace v n))

(Additive v, Num n) => HasOrigin (Trace v n) 

Methods

moveOriginTo :: Point (V (Trace v n)) (N (Trace v n)) -> Trace v n -> Trace v n #

(Metric v, OrderedField n) => Alignable (Trace v n) Source # 

Methods

alignBy' :: (InSpace v n (Trace v n), Fractional n, HasOrigin (Trace v n)) => (v n -> Trace v n -> Point v n) -> v n -> n -> Trace v n -> Trace v n Source #

defaultBoundary :: (((* -> *) ~ V (Trace v n)) v, (* ~ N (Trace v n)) n) => v n -> Trace v n -> Point v n Source #

alignBy :: (InSpace v n (Trace v n), Fractional n, HasOrigin (Trace v n)) => v n -> n -> Trace v n -> Trace v n Source #

Rewrapped (Trace v n) (Trace v' n') 
type Unwrapped (Trace v n) 
type Unwrapped (Trace v n) = Point v n -> v n -> SortedList n
type V (Trace v n) 
type V (Trace v n) = v
type N (Trace v n) 
type N (Trace v n) = n

class (Additive (V a), Ord (N a)) => Traced a #

Minimal complete definition

getTrace

Instances

Traced b => Traced [b] 

Methods

getTrace :: [b] -> Trace (V [b]) (N [b])

Traced b => Traced (Set b) 

Methods

getTrace :: Set b -> Trace (V (Set b)) (N (Set b))

Traced t => Traced (TransInv t) 

Methods

getTrace :: TransInv t -> Trace (V (TransInv t)) (N (TransInv t))

(RealFloat n, Ord n) => Traced (CSG n) # 

Methods

getTrace :: CSG n -> Trace (V (CSG n)) (N (CSG n))

(RealFloat n, Ord n) => Traced (Frustum n) # 

Methods

getTrace :: Frustum n -> Trace (V (Frustum n)) (N (Frustum n))

(Fractional n, Ord n) => Traced (Box n) # 

Methods

getTrace :: Box n -> Trace (V (Box n)) (N (Box n))

OrderedField n => Traced (Ellipsoid n) # 

Methods

getTrace :: Ellipsoid n -> Trace (V (Ellipsoid n)) (N (Ellipsoid n))

(Traced a, Num (N a)) => Traced (Located a) #

The trace of a Located a is the trace of the a, translated to the location.

Methods

getTrace :: Located a -> Trace (V (Located a)) (N (Located a))

(Traced a, Traced b, SameSpace a b) => Traced (a, b) 

Methods

getTrace :: (a, b) -> Trace (V (a, b)) (N (a, b))

Traced b => Traced (Map k b) 

Methods

getTrace :: Map k b -> Trace (V (Map k b)) (N (Map k b))

(Additive v, Ord n) => Traced (Point v n) 

Methods

getTrace :: Point v n -> Trace (V (Point v n)) (N (Point v n))

(Additive v, Ord n) => Traced (Trace v n) 

Methods

getTrace :: Trace v n -> Trace (V (Trace v n)) (N (Trace v n))

TypeableFloat n => Traced (BoundingBox V3 n) # 

Methods

getTrace :: BoundingBox V3 n -> Trace (V (BoundingBox V3 n)) (N (BoundingBox V3 n))

RealFloat n => Traced (BoundingBox V2 n) # 

Methods

getTrace :: BoundingBox V2 n -> Trace (V (BoundingBox V2 n)) (N (BoundingBox V2 n))

(OrderedField n, Metric v, Semigroup m) => Traced (Subdiagram b v n m) 

Methods

getTrace :: Subdiagram b v n m -> Trace (V (Subdiagram b v n m)) (N (Subdiagram b v n m))

(Metric v, OrderedField n, Semigroup m) => Traced (QDiagram b v n m) 

Methods

getTrace :: QDiagram b v n m -> Trace (V (QDiagram b v n m)) (N (QDiagram b v n m))

Diagram traces

trace :: (Metric v, OrderedField n, Semigroup m) => Lens' (QDiagram b v n m) (Trace v n) #

setTrace :: (OrderedField n, Metric v, Semigroup m) => Trace v n -> QDiagram b v n m -> QDiagram b v n m #

withTrace :: (InSpace v n a, Metric v, OrderedField n, Monoid' m, Traced a) => a -> QDiagram b v n m -> QDiagram b v n m Source #

Use the trace from some object as the trace for a diagram, in place of the diagram's default trace.

Querying traces

traceV :: ((~) * n (N a), Num n, Traced a) => Point (V a) n -> V a n -> a -> Maybe (V a n) #

traceP :: ((~) * n (N a), Traced a, Num n) => Point (V a) n -> V a n -> a -> Maybe (Point (V a) n) #

maxTraceV :: ((~) * n (N a), Num n, Traced a) => Point (V a) n -> V a n -> a -> Maybe (V a n) #

maxTraceP :: ((~) * n (N a), Num n, Traced a) => Point (V a) n -> V a n -> a -> Maybe (Point (V a) n) #

Subdiagram traces

boundaryFrom :: (OrderedField n, Metric v, Semigroup m) => Subdiagram b v n m -> v n -> Point v n Source #

Compute the furthest point on the boundary of a subdiagram, beginning from the location (local origin) of the subdiagram and moving in the direction of the given vector. If there is no such point, the origin is returned; see also boundaryFromMay.

boundaryFromMay :: (Metric v, OrderedField n, Semigroup m) => Subdiagram b v n m -> v n -> Maybe (Point v n) Source #

Compute the furthest point on the boundary of a subdiagram, beginning from the location (local origin) of the subdiagram and moving in the direction of the given vector, or Nothing if there is no such point.