hgeometry-kernel
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2024

HGeometry.Line.General

Description

An algebraic data type representing a line; we explicitly model vertical lines.

Synopsis

Documentation

data VerticalOrLineEQ r Source #

A line type that explicitly represents vertical lines.

Constructors

VerticalLineThrough !r 
NonVertical !(LineEQ r) 

Instances

Instances details
NFData r => NFData (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

Methods

rnf :: VerticalOrLineEQ r -> () Source #

Generic (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

Associated Types

type Rep (VerticalOrLineEQ r) 
Instance details

Defined in HGeometry.Line.General

type Rep (VerticalOrLineEQ r) = D1 ('MetaData "VerticalOrLineEQ" "HGeometry.Line.General" "hgeometry-kernel-1.0.0.0-inplace" 'False) (C1 ('MetaCons "VerticalLineThrough" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)) :+: C1 ('MetaCons "NonVertical" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LineEQ r))))
Show r => Show (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

Eq r => Eq (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

Ord r => Ord (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

Num r => GetDirection (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

Methods

inLineVector :: forall r0 (d :: Nat). (r0 ~ NumType (VerticalOrLineEQ r), d ~ Dimension (VerticalOrLineEQ r)) => VerticalOrLineEQ r -> Vector d r0 Source #

AsLine (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

Num r => HasSupportingLine (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.PointAndVector

HasOnLine (VerticalOrLineEQ r) 2 Source # 
Instance details

Defined in HGeometry.Line.General

Methods

onLine :: (Point_ point 2 r0, Num r0, Eq r0, r0 ~ NumType (VerticalOrLineEQ r), 2 ~ Dimension (VerticalOrLineEQ r)) => point -> VerticalOrLineEQ r -> Bool Source #

(Fractional r, Eq r) => ConstructableHyperPlane_ (VerticalOrLineEQ r) 2 r Source # 
Instance details

Defined in HGeometry.Line.General

Associated Types

type HyperPlaneFromEquationConstraint (VerticalOrLineEQ r) 2 r 
Instance details

Defined in HGeometry.Line.General

Methods

hyperPlaneFromEquation :: Vector (2 + 1) r -> VerticalOrLineEQ r Source #

fromPointAndNormal :: (Point_ point 2 r, Num r) => point -> Vector 2 r -> VerticalOrLineEQ r Source #

HyperPlane_ (VerticalOrLineEQ r) 2 r Source # 
Instance details

Defined in HGeometry.Line.General

Methods

evalHyperPlaneEquation :: (Num r, Point_ point 2 r) => VerticalOrLineEQ r -> point -> r Source #

hyperPlaneEquation :: VerticalOrLineEQ r -> Vector (2 + 1) r Source #

normalVector :: VerticalOrLineEQ r -> Vector 2 r Source #

onHyperPlane :: (Point_ point 2 r, Eq r, Num r) => point -> VerticalOrLineEQ r -> Bool Source #

onSideTest :: (Point_ point 2 r, Ord r, Num r) => point -> VerticalOrLineEQ r -> Ordering Source #

(Fractional r, Eq r) => Line_ (VerticalOrLineEQ r) 2 r Source # 
Instance details

Defined in HGeometry.Line.General

Methods

fromPointAndVec :: (Point_ point 2 r, Line_ (VerticalOrLineEQ r) 2 r, Num r) => point -> Vector 2 r -> VerticalOrLineEQ r Source #

Num r => HasPickInteriorPoint (VerticalOrLineEQ r) 2 r Source # 
Instance details

Defined in HGeometry.Line.General

(Num r, Ord r, Point_ point 2 r) => HasIntersectionWith (VerticalOrLineEQ r) (Rectangle point) Source # 
Instance details

Defined in HGeometry.Box

(Num r, Ord r) => HasIntersectionWith (VerticalOrLineEQ r) (HalfSpaceF (VerticalOrLineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

(Num r, Ord r) => HasIntersectionWith (VerticalOrLineEQ r) (HalfSpaceF (LineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

(Num r, Ord r) => HasIntersectionWith (VerticalOrLineEQ r) (HalfSpaceF (LinePV 2 r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

Eq r => HasIntersectionWith (VerticalOrLineEQ r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

(Eq r, Num r) => HasIntersectionWith (VerticalOrLineEQ r) (LineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

(Num r, Ord r) => HasIntersectionWith (LineEQ r) (HalfSpaceF (VerticalOrLineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

Eq r => HasIntersectionWith (LineEQ r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

(Fractional r, Ord r, Point_ point 2 r) => IsIntersectableWith (VerticalOrLineEQ r) (Rectangle point) Source # 
Instance details

Defined in HGeometry.Box

(Eq r, Fractional r) => IsIntersectableWith (VerticalOrLineEQ r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

(Ord r, Fractional r) => IsIntersectableWith (VerticalOrLineEQ r) (LineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

(Fractional r, Ord r) => IsIntersectableWith (LineEQ r) (HalfSpaceF (VerticalOrLineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

(Eq r, Fractional r) => IsIntersectableWith (LineEQ r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

(Eq r, Num r) => HasIntersectionWith (VerticalOrLineEQ r) (LinePV 2 r) Source # 
Instance details

Defined in HGeometry.Line

(Ord r, Fractional r) => IsIntersectableWith (VerticalOrLineEQ r) (LinePV 2 r) Source # 
Instance details

Defined in HGeometry.Line

(Num r, Ord r) => HasIntersectionWith (LinePV 2 r) (HalfSpaceF (VerticalOrLineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

(Eq r, Num r) => HasIntersectionWith (LinePV 2 r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line

(Fractional r, Ord r) => IsIntersectableWith (LinePV 2 r) (HalfSpaceF (VerticalOrLineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

(Ord r, Fractional r) => IsIntersectableWith (LinePV 2 r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line

Eq r => HasIntersectionWith (VerticalOrLineEQ r :+ extra) (VerticalOrLineEQ r :+ extra') Source # 
Instance details

Defined in HGeometry.Line.General

Methods

intersects :: (VerticalOrLineEQ r :+ extra) -> (VerticalOrLineEQ r :+ extra') -> Bool Source #

(Eq r, Fractional r) => IsIntersectableWith (VerticalOrLineEQ r :+ extra) (VerticalOrLineEQ r :+ extra') Source # 
Instance details

Defined in HGeometry.Line.General

Methods

intersect :: (VerticalOrLineEQ r :+ extra) -> (VerticalOrLineEQ r :+ extra') -> Intersection (VerticalOrLineEQ r :+ extra) (VerticalOrLineEQ r :+ extra') Source #

type Rep (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

type Rep (VerticalOrLineEQ r) = D1 ('MetaData "VerticalOrLineEQ" "HGeometry.Line.General" "hgeometry-kernel-1.0.0.0-inplace" 'False) (C1 ('MetaCons "VerticalLineThrough" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)) :+: C1 ('MetaCons "NonVertical" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LineEQ r))))
type Dimension (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

type NumType (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

type HyperPlaneFromEquationConstraint (VerticalOrLineEQ r) 2 r Source # 
Instance details

Defined in HGeometry.Line.General

type Intersection (VerticalOrLineEQ r) (Rectangle point) Source # 
Instance details

Defined in HGeometry.Box

type Intersection (VerticalOrLineEQ r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

type Intersection (VerticalOrLineEQ r) (LineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

type Intersection (LineEQ r) (HalfSpaceF (VerticalOrLineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

type Intersection (LineEQ r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

type Intersection (VerticalOrLineEQ r) (LinePV 2 r) Source # 
Instance details

Defined in HGeometry.Line

type Intersection (LinePV 2 r) (HalfSpaceF (VerticalOrLineEQ r)) Source # 
Instance details

Defined in HGeometry.HalfSpace.Intersection

type Intersection (LinePV 2 r) (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line

type Intersection (VerticalOrLineEQ r :+ extra) (VerticalOrLineEQ r :+ extra') Source # 
Instance details

Defined in HGeometry.Line.General

class AsLine line where Source #

Types that can be converted into a general 2 dimensional line

Methods

asLine :: NumType line ~ r => line -> VerticalOrLineEQ r Source #

Convert a given line into a general Line

Instances

Instances details
AsLine (VerticalOrLineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

AsLine (LineEQ r) Source # 
Instance details

Defined in HGeometry.Line.General

Methods

asLine :: NumType (LineEQ r) ~ r0 => LineEQ r -> VerticalOrLineEQ r0 Source #

(Fractional r, Ord r) => AsLine (LinePV 2 r) Source # 
Instance details

Defined in HGeometry.Line.PointAndVector

Methods

asLine :: NumType (LinePV 2 r) ~ r0 => LinePV 2 r -> VerticalOrLineEQ r0 Source #