<?xml version="1.0"?>
<doc>
    <assembly>
        <name>SphericalLib</name>
    </assembly>
    <members>
        <member name="T:Spherical.Root">
            <summary>
            A root is an intersection of two circles in a convex
            </summary>
        </member>
        <member name="M:Spherical.Root.#ctor(Spherical.Cartesian,Spherical.Convex,System.Double,System.Int32,System.Int32)">
            <summary>
            Create a root from the point, its parents and use the given convex 
            to set the status and store which convex covers and masks it.
            </summary>
            <param name="point"></param>
            <param name="c"></param>
            <param name="parent1"></param>
            <param name="parent2"></param>
        </member>
        <member name="M:Spherical.Root.ToString">
            <summary>
            String representation
            </summary>
            <returns></returns>
        </member>
        <member name="P:Spherical.Root.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.Convex">
            <summary>
            Convex is the intersection of a set of halfspaces
            </summary>
        </member>
        <member name="M:Spherical.Convex.#ctor">
            <summary>
            Create an empty convex
            </summary>
        </member>
        <member name="M:Spherical.Convex.#ctor(System.Int32)">
            <summary>
            Create an empty convex with given capacity
            </summary>
            <param name="capacity"></param>
        </member>
        <member name="M:Spherical.Convex.#ctor(System.String,System.Int32)">
            <summary>
            Create an empty convex with given name and capacity
            </summary>
            <param name="name"></param>
            <param name="capacity"></param>
        </member>
        <member name="M:Spherical.Convex.#ctor(Spherical.Halfspace)">
            <summary>
            Create convex with a single halfspace in it
            </summary>
            <param name="halfSpace"></param>
        </member>
        <member name="M:Spherical.Convex.#ctor(System.Collections.Generic.IEnumerable{Spherical.Halfspace})">
            <summary>
            Create convex from a collection of halfspaces
            </summary>
            <param name="halfSpaces"></param>
        </member>
        <member name="M:Spherical.Convex.#ctor(Spherical.Convex)">
            <summary>
            Copy constructor (clone halfspaces)
            </summary>
            <param name="convex"></param>
        </member>
        <member name="M:Spherical.Convex.#ctor(System.Collections.Generic.List{Spherical.Cartesian},Spherical.PointOrder)">
            <summary>
            Create a polygon convex from a list of points that are in a specified order.
            </summary>
            <param name="list"></param>
            <param name="order"></param>
        </member>
        <member name="M:Spherical.Convex.Clone(Spherical.Convex)">
            <summary>
            Return clone of given convex
            </summary>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.Intersect(Spherical.Halfspace)">
            <summary>
            Intersect this convex with an halfspace. Simply adds halfspace to list.
            </summary>
            <param name="h"></param>
        </member>
        <member name="M:Spherical.Convex.Intersect(Spherical.Convex)">
            <summary>
            Intersect this convex with another. Simply adds clones of the other's halfspaces.
            </summary>
            <param name="c"></param>
        </member>
        <!-- Badly formed XML comment ignored for member "M:Spherical.Convex.Difference(Spherical.Convex)" -->
        <member name="M:Spherical.Convex.Grow(System.Double)">
            <summary>
            Increase angles of all halfspaces by the given amount
            and return this
            </summary>
            <param name="arcmin"></param>
        </member>
        <member name="M:Spherical.Convex.Covers(System.Double,System.Double,System.Double,System.Double)">
            <summary>
            Check if convex covers a point (x,y,z) unit vector
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.Covers(Spherical.Cartesian,System.Double)">
            <summary>
            Check if convex covers a point
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.IndexCoversMasks(Spherical.Cartesian,System.Double,System.Collections.Generic.List{System.Int32}@,System.Collections.Generic.List{System.Int32}@)">
            <summary>
            Return indicies of halfspaces that cover and that mask the give point
            </summary>
            <param name="p"></param>
            <param name="tolerance"></param>
            <param name="covers"></param>
            <param name="masks"></param>
        </member>
        <member name="M:Spherical.Convex.Covers(Spherical.Halfspace,System.Double)">
            <summary>
            Check if convex covers a halfspace
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.SimpleSimplify(System.Double)">
            <summary>
            Simplify description of convex by removing redundant halfspaces. 
            Return 'false' if empty, 'true' otherwise.
            </summary>
        </member>
        <member name="M:Spherical.Convex.CalcArea(Spherical.Cartesian)">
            <summary>
            (Re)calculate the area using a given pivot/center point
            </summary>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.MecCovers(Spherical.Cartesian,System.Double)">
            <summary>
            Check if the minimal enclosing circles of the patches
            contain the given point (within the given tolerance)
            </summary>
            <param name="x"></param>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.SmartCovers(Spherical.Cartesian,System.Double)">
            <summary>
            Check if the given point is covered but first test the minimal
            enclosing circles of the patches. Uses the given tolerance.
            </summary>
            <param name="x"></param>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.MecDisjoint(Spherical.Convex,System.Double)">
            <summary>
            Check to see if the minimal enclosing circles of the patches are disjoint
            </summary>
            <param name="c"></param>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.SmartIntersect(Spherical.Convex,System.Double,System.Int32)">
            <summary>
            Intersect this with another, return 'false' if empty, 'true' otherwise
            </summary>
            <param name="c"></param>
        </member>
        <member name="M:Spherical.Convex.ComparisonAreaAscending(Spherical.Convex,Spherical.Convex)">
            <summary>
            Area comparison function to be used for sorting, etc. (ascending)
            </summary>
            <param name="c"></param>
            <param name="k"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.ComparisonAreaDescending(Spherical.Convex,Spherical.Convex)">
            <summary>
            Area comparison function to be used for sorting, etc. (descending)
            </summary>
            <param name="c"></param>
            <param name="k"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.Parse(System.String,System.Boolean)">
            <summary>
            Parse a string of 'CONVEX x1 y1 z1 d1 x2... dN' or "POLY ra1 dec1 ra2 dec2 ..." into a Convex.
            </summary>
            <param name="repr"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.ParsePoly(System.String)">
            <summary>
            Parse string "POLYGON ra1 dec1 ra2 dec2 ra3 dec3 ... raN decN" and return point list
            </summary>
            <param name="repr"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Convex.ToString">
            <summary>
            String representation: "CONVEX x1 y1 z1 d1 x2... dN"
            </summary>
            <returns></returns>
        </member>
        <member name="P:Spherical.Convex.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.Region">
            <summary>
            Region is the union of convexes
            </summary>
        </member>
        <member name="M:Spherical.Region.#ctor">
            <summary>
            Create empty region
            </summary>
        </member>
        <member name="M:Spherical.Region.#ctor(System.Int32)">
            <summary>
            Create empty region of given capacity
            </summary>
            <param name="capacity"></param>
        </member>
        <member name="M:Spherical.Region.#ctor(System.String)">
            <summary>
            Create empty region of given name
            </summary>
            <param name="name"></param>
        </member>
        <member name="M:Spherical.Region.#ctor(System.String,System.Int32)">
            <summary>
            Create empty region of given name and capacity
            </summary>
            <param name="name"></param>
            <param name="capacity"></param>
        </member>
        <member name="M:Spherical.Region.#ctor(Spherical.Convex,System.Boolean)">
            <summary>
            Create region with a single convex in it
            </summary>
            <param name="convex"></param>
        </member>
        <member name="M:Spherical.Region.#ctor(Spherical.Region)">
            <summary>
            Copy constructor (clone region)
            </summary>
            <param name="region"></param>
        </member>
        <member name="M:Spherical.Region.#ctor(Spherical.Halfspace)">
            <summary>
            Create region with a single halfspace in it
            </summary>
            <param name="halfspace"></param>
        </member>
        <member name="M:Spherical.Region.#ctor(System.Double,System.Double,System.Double)">
            <summary>
            Create region with a single halfspace
            </summary>
            <param name="ra"></param>
            <param name="dec"></param>
            <param name="arcmin"></param>
        </member>
        <member name="M:Spherical.Region.Grow(System.Double)">
            <summary>
            Increase angles of all halfspaces in all convexes by the given amount
            </summary>
            <param name="arcmin"></param>
        </member>
        <member name="M:Spherical.Region.Covers(System.Double,System.Double,System.Double,System.Double)">
            <summary>
            Chech if point (x,y,z) is inside within given tolerance
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.Covers(Spherical.Cartesian,System.Double)">
            <summary>
            Check if region covers a point
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.Intersect(Spherical.Halfspace)">
            <summary>
            Intersect this region with a halfspace in place.
            </summary>
            <param name="h"></param>
            <param name="clone"></param>
        </member>
        <member name="M:Spherical.Region.Intersect(Spherical.Convex)">
            <summary>
            Intersect this region with the given convex in place.
            </summary>
            <param name="c"></param>
            <param name="clone"></param>
        </member>
        <!-- Badly formed XML comment ignored for member "M:Spherical.Region.Intersect(Spherical.Region)" -->
        <!-- Badly formed XML comment ignored for member "M:Spherical.Region.Intersect(Spherical.Region,System.Double)" -->
        <member name="M:Spherical.Region.Union(Spherical.Convex)">
            <summary>
            Union of this region with a given convex, in place.
            The method simply adds a clone of the convex to the list.
            </summary>
            <param name="convex"></param>
        </member>
        <member name="M:Spherical.Region.Union(Spherical.Region)">
            <summary>
            Union of this region and another one, in place.
            The method adds clones of the other's convexes.
            </summary>
            <param name="region"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.Difference(Spherical.Halfspace)">
            <summary>
            Difference of this region and a given halfspace 'h'.
            Same as intersecting with 'h' inverse. This is an
            in place operation but safe for the halfspace.
            </summary>
            <param name="h"></param>
        </member>
        <!-- Badly formed XML comment ignored for member "M:Spherical.Region.Difference(Spherical.Convex)" -->
        <member name="M:Spherical.Region.SimpleSimplify(System.Double)">
            <summary>
            SimpleSimplify all convexes, remove empty ones and merge
            convexes if same halfspaces except one that is inverse
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.Simplify(System.Boolean,System.Double,System.Int32,System.Boolean)">
            <summary>
            Full simplification of region - creates patches
            </summary>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.Simplify">
            <summary>
            Full simplifcation of region - creates patches
            </summary>
        </member>
        <member name="M:Spherical.Region.Simplify(System.Double)">
            <summary>
            Full simplification of region - creates patches
            </summary>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.Simplify(System.Double,System.Boolean)">
            <summary>
            Full simplification of region - creates patches
            </summary>
            <param name="tolerance"></param>
            <param name="make_disjoint"></param>
        </member>
        <member name="M:Spherical.Region.Simplify(System.Boolean)">
            <summary>
            Full simplification of region - creates patches
            </summary>
            <param name="make_disjoint"></param>
        </member>
        <member name="M:Spherical.Region.MakeDisjoint(System.Double,System.Int32)">
            <summary>
            Make sure the region has disjoint convexes
            </summary>
        </member>
        <member name="M:Spherical.Region.TwoDisjoint(System.Double,System.Int32,System.Collections.Generic.List{System.Int32},System.Collections.Generic.List{System.Int32})">
            <summary>
            Picks 2 colliding convexes c1 and c2, and replace them 
            with disjoint combinations: c1, c2-c1
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.CalcArea(Spherical.Cartesian)">
            <summary>
            (Re)calculate the area using a given pivot/center point
            </summary>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.MecCovers(Spherical.Cartesian,System.Double)">
            <summary>
            Check if the minimal enclosing circles of the patches
            contain the given point (within the given tolerance)
            </summary>
            <param name="x"></param>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.NumberOfPatches">
            <summary>
            Return the number of all patches
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.SmartCovers(Spherical.Cartesian,System.Double)">
            <summary>
            Check if the given point is covered but first test the minimal
            enclosing circles of the patches. Uses the given tolerance.
            </summary>
            <param name="x"></param>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.SmartIntersect(Spherical.Region,System.Double,System.Int32)">
            <summary>
            Compute intersection
            </summary>
            <param name="r"></param>
        </member>
        <member name="M:Spherical.Region.Parse(System.String,System.Boolean)">
            <summary>
            Parse string "REGION {CONVEX ...}" into a region.
            </summary>
            <param name="repr"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Region.ToString">
            <summary>
            String representation: "REGION CONVEX... CONVEX..."
            </summary>
            <returns></returns>
        </member>
        <member name="P:Spherical.Region.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.PatchFactory">
            <summary>
            PatchFactory has a set of roots and arclets plus related info
            </summary>
        </member>
        <member name="M:Spherical.PatchFactory.#ctor(Spherical.Convex,System.Double)">
            <summary>
            Derive roots of convex, save 'west point' of halfspaces, 
            merge roots and set their (alter)ego
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.SelectRoots(Spherical.RootStatus)">
            <summary>
            Select roots with their status set to something
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.SelectRoots(System.Int32)">
            <summary>
            Select roots with a certain 'good' flag value
            </summary>
            <param name="goodness"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.SelectCirclesWithRoots(System.Collections.Generic.List{System.Int32})">
            <summary>
            Return indices of circles that have roots in specified set
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.SelectRootsOnCircle(System.Int32)">
            <summary>
            Return indices of roots on a circle specified by halfspace index.
            The list is sorted such that the roots have counterclockwise ordering.
            </summary>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.BuildArclets">
            <summary>
            Return all arclets of all circles
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.SelectArcletsVisible(Spherical.RootStatus,System.Double)">
            <summary>
            Return indices of visible arclets on given circles
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.MakeArc(Spherical.PatchFactory.Arclet)">
            <summary>
            Materialize an arc from an arclet
            </summary>
            <param name="arclet"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.InitRootGoodness(System.Collections.Generic.List{System.Int32})">
            <summary>
            Initialize the 'good' flag of roots like this
            	good =  1 : root is inside convex
            	good =  0 : root's parents are 'goodcircles' (in S) but masked out by other 'goodcircles'
            	good = -1 : root's parents are NOT both 'goodcircles'
            	good = -2 : root's parents ARE 'goodcircles' (in S) but masked by at least one 'not goodcircle'
            </summary>
            <param name="S"></param>
        </member>
        <member name="M:Spherical.PatchFactory.SelectCompleteCircles(System.Double,System.Int32,System.Collections.Generic.List{System.Int32}@,System.Collections.Generic.List{System.Int32}@)">
            <summary>
            Return indices of halfspaces that are needed to represent the convex (still not minimal)
            and which one is visible.
            </summary>
        </member>
        <member name="M:Spherical.PatchFactory.ConnectArclets(System.Collections.Generic.List{System.Int32}@)">
            <summary>
            Connect arclets into patch. Picks the first arclet index from the
            given list of arclets and return the indices of that make a patch.
            Also removes the used indices from the passed list of arclets.
            </summary>
            <param name="iArclet"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.DerivePatches(System.Double,System.Int32,System.Boolean)">
            <summary>
            Derive all patches of its convex and simplify it if requested
            </summary>
            <param name="maxiter"></param>
            <param name="simplify_convex"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.PatchFactory.Test">
            <summary>
            Test function prints info to stdout while deriving patches...
            </summary>
        </member>
        <member name="M:Spherical.PatchFactory.ToString">
            <summary>
            String representation (roots and arclets)
            </summary>
            <returns></returns> 
        </member>
        <member name="P:Spherical.PatchFactory.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.PatchFactory.Arclet">
            <summary>
            Internally point to roots and halfspaces that make up an arc
            </summary>
        </member>
        <member name="T:Spherical.Arc">
            <summary>
            An arclet is a segment of a circle on the unit sphere.
            </summary>
        </member>
        <member name="M:Spherical.Arc.#ctor(Spherical.Halfspace,Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Create an arc
            </summary>
            <param name="circle"></param>
            <param name="p1"></param>
            <param name="p2"></param>
        </member>
        <member name="M:Spherical.Arc.#ctor(Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Great circle arc
            </summary>
            <param name="p1"></param>
            <param name="p2"></param>
        </member>
        <member name="M:Spherical.Arc.#ctor(Spherical.Arc)">
            <summary>
            Copy constructor
            </summary>
            <param name="a"></param>
        </member>
        <member name="M:Spherical.Arc.CalcArea(Spherical.Cartesian,System.Double)">
            <summary>
            Compute the area of the triangle defined by the arc and a given 
            point which is connected to the endpoints with great circles.
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Arc.VerifyOkay(System.Double)">
            <summary>
            Verify if point are on circle within the given tolerance
            </summary>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Arc.AreaSemilune(Spherical.Halfspace,Spherical.Cartesian,Spherical.Cartesian,@)">
            <summary>
            Compute area of the semilune
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Arc.MiddlePoint(Spherical.Halfspace,Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Compute middle point of arclet
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Arc.MinimalEnclosingCircle(Spherical.Arc[])">
            <summary>
            Derive the minimal enclosing circle for a list of arcs
            </summary>
            <param name="arclist"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Arc.WideConvex(System.Double)">
            <summary>
            Create a convex with given width along the arc
            </summary>
            <param name="arcmin"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Arc.ToString">
            <summary>
            String representation
            </summary>
            <returns></returns>
        </member>
        <member name="P:Spherical.Arc.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.ESign">
            <summary>
            Extended sign is for convexes (and halfspaces)
            </summary>
        </member>
        <member name="T:Spherical.PointOrder">
            <summary>
            PointOrder is crucial when defining polygons
              CCW           - points are counter-clockwise (CCW)
              CW    		- points are clockwise (CW)
              Safe          - points are safely ordered (CW or CCW)
              Random		- random points should run through convex hull 
            				  (not implemented)
            </summary>
        </member>
        <member name="T:Spherical.RootStatus">
            <summary>
            Status flag of a root
            </summary>
        </member>
        <member name="T:Spherical.Const">
            <summary>
            Class holds some constants
            </summary>
        </member>
        <member name="P:Spherical.Const.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.Cartesian">
            <summary>
            A point on the surface of the unit sphere (unit vector)
            </summary>
        </member>
        <member name="M:Spherical.Cartesian.#ctor(System.Double,System.Double,System.Double,System.Boolean)">
            <summary>
            Create a point using a vector (x,y,z), which should get 
            normalized unless you really know what you are doing
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <param name="normalize"></param>
        </member>
        <member name="M:Spherical.Cartesian.#ctor(System.Double,System.Double)">
            <summary>
            Create a point from the angular coordinates (RA,Dec)
            x, y, z = cos cos, cos sin, sin
            </summary>
            <param name="ra"></param>
            <param name="dec"></param>
        </member>
        <member name="M:Spherical.Cartesian.Set(System.Double,System.Double,System.Double,System.Boolean)">
            <summary>
            Set point by a direction vector (x,y,z),
            which should get normalized unless you 
            realy know what you are doing
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <param name="normalize"></param>
        </member>
        <member name="M:Spherical.Cartesian.Set(System.Double,System.Double)">
            <summary>
            Set point from angular position (RA,Dec)
            </summary>
            <param name="ra"></param>
            <param name="dec"></param>
        </member>
        <member name="M:Spherical.Cartesian.SetMiddlePoint(Spherical.Cartesian,Spherical.Cartesian,System.Boolean)">
            <summary>
            Set point to be the middle point of two given points
            and normalize if needed
            </summary>
            <param name="p"></param>
            <param name="q"></param>
            <param name="normalize"></param>
        </member>
        <member name="M:Spherical.Cartesian.Normalize">
            <summary>
            Normalize the point
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Mirror">
            <summary>
            Mirror the point: v *= -1
            </summary>
        </member>
        <member name="M:Spherical.Cartesian.Mirrored">
            <summary>
            Return mirrored point: -v
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Scale(System.Double)">
            <summary>
            Multiply components with given number
            </summary>
            <param name="s"></param>
        </member>
        <member name="M:Spherical.Cartesian.Scaled(System.Double)">
            <summary>
            Return a vector that is scaled by the given number
            </summary>
            <param name="s"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.MiddlePoint(Spherical.Cartesian,System.Boolean)">
            <summary>
            Return middle point: m = (p+q) / |p+q|
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Dot(Spherical.Cartesian)">
            <summary>
            Cosine of angle to an another point.
            It is the 3D dot product of the 2 vectors
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Add(Spherical.Cartesian)">
            <summary>
            Add to another vector, result is a new vector
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Sub(Spherical.Cartesian)">
            <summary>
            Subtract another vector, result is a new vector
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Cross(Spherical.Cartesian,System.Boolean)">
            <summary>
            Cross product with another direction/point, result is again on the unit sphere
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.AngleInRadian(Spherical.Cartesian)">
            <summary>
            Angle to an another point
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.AngleInDegree(Spherical.Cartesian)">
            <summary>
            Angle to another point
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.AngleInArcmin(Spherical.Cartesian)">
            <summary>
            Angle to another point
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.GirardArea(Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Area of spherical triangle defined this and other two point.
            </summary>
            <param name="p"></param>
            <param name="q"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Same(Spherical.Cartesian,System.Double)">
            <summary>
            Check if Point is identical to another within a given tolerance
            </summary>
            <param name="p"></param>
            <param name="epsilon"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Same(Spherical.Cartesian)">
            <summary>
            Check if Point is identical to another within Const.Epsilon
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Opposite(Spherical.Cartesian,System.Double)">
            <summary>
            Test whether or not this vector is the opposite
            of another vector.
            Opposite means same magnitude, opposite direction.
            </summary>
            <param name="p">The other vector</param>
            <returns>true if other vector is close enough to 
            being opposite, false otherwise</returns>
        </member>
        <member name="M:Spherical.Cartesian.Opposite(Spherical.Cartesian)">
            <summary>
            Test whether or not this vector is the opposite
            of another vector within Const.Epsilon
            Opposite means same magnitude, opposite direction.
            </summary>
            <param name="p">The other vector</param>
            <returns>true if other vector is close enough to 
            being opposite, false otherwise</returns>
        </member>
        <member name="M:Spherical.Cartesian.TripleProduct(Spherical.Cartesian,Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Triple product of three vectors is the volume of the parallelepipedon.
            The sign shows the winding of the points.
            </summary>
            <param name="p1"></param>
            <param name="p2"></param>
            <param name="p3"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Xyz2Radec(System.Double,System.Double,System.Double,System.Double@,System.Double@)">
            <summary>
            Convert (x,y,z) to RA,DEC.
            (x,y,z) must be normalized.
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <param name="ra">out in degrees</param>
            <param name="dec">out in degrees</param>
        </member>
        <member name="M:Spherical.Cartesian.Radec2Xyz(System.Double,System.Double,System.Double@,System.Double@,System.Double@)">
            <summary>
            Convert (RA, DEC) to (x, y, z).
            RA, DEC must be well defined.
            </summary>
            <param name="ra">in degrees</param>
            <param name="dec">in degrees</param>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
        </member>
        <member name="M:Spherical.Cartesian.Cartesian2Radec(Spherical.Cartesian,System.Double@,System.Double@)">
            <summary>
            Static method to convert point to (RA,Dec)
            </summary>
            <param name="p"></param>
            <param name="ra"></param>
            <param name="dec"></param>
        </member>
        <member name="M:Spherical.Cartesian.SelectPoints(System.Collections.Generic.List{Spherical.Cartesian},System.Collections.Generic.List{System.Int32})">
            <summary>
            Select and return a subset of points. Copies references of points.
            </summary>
            <param name="points"></param>
            <param name="idx"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.SelectPoints(System.Collections.Generic.List{Spherical.Root},System.Collections.Generic.List{System.Int32})">
            <summary>
            Select and return a subset of root points. Copies references of points.
            </summary>
            <param name="points"></param>
            <param name="idx"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.CenterOfMass(System.Collections.Generic.List{Spherical.Cartesian},System.Boolean)">
            <summary>
            Compute the center of mass of the points in the list
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.MinimalEnclosingCircle(Spherical.Cartesian,Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Brute-force implementation of the minimal enclosing circle
            takes three points.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.MinimalEnclosingCircle(System.Collections.Generic.List{Spherical.Cartesian})">
            <summary>
            Brute-force implementation of the minimal enclosing circle, 
            which scales with N^4 (means slow ;-)
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.GirardArea(Spherical.Cartesian,Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Compute area of triangle defined by 3 points connected with great circles.
            </summary>
            <param name="p"></param>
            <param name="q"></param>
            <param name="r"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.VerifyOkay(System.Double)">
            <summary>
            Check if point is really on the unit sphere:
            Length is close to one within the tolerance limit
            </summary>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.Parse(System.String,System.Boolean)">
            <summary>
            Parse an input string of "x y z" into a Point. 
            </summary>
            <param name="s"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Cartesian.ToString">
            <summary>
            String representation is just the 3 coordinates: x y z
            </summary>
            <returns></returns>
        </member>
        <member name="P:Spherical.Cartesian.Norm">
            <summary>
            Compute length of x,y,z vector
            </summary>
        </member>
        <member name="P:Spherical.Cartesian.RA">
            <summary>
            Get property of angular coordinate RA, 
            which is computed on the fly
            </summary>
        </member>
        <member name="P:Spherical.Cartesian.Dec">
            <summary>
            Get property of angular coordinate Dec, 
            which is computed on the fly
            </summary>
        </member>
        <member name="P:Spherical.Cartesian.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.Outline">
            <summary>
            Class represents a "free-hand" outline of a region
            </summary>
        </member>
        <member name="M:Spherical.Outline.#ctor(System.Collections.Generic.List{Spherical.Cartesian})">
            <summary>
            Create outline by forming arcs
            </summary>
            <param name="points"></param>
        </member>
        <member name="M:Spherical.Outline.IsConcave(Spherical.Cartesian,Spherical.Cartesian,Spherical.Cartesian,System.Double)">
            <summary>
            Check if vertex is concave
            </summary>
            <param name="m"></param>
            <param name="c"></param>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Outline.ConvexInside(System.Double)">
            <summary>
            Get one convex and update self. Return null if nothing left but hole (if any)
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Outline.Region">
            <summary>
            Make a region from outline
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Outline.Region(System.Double)">
            <summary>
            Make a region from outline
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Outline.ToString">
            <summary>
            String representation
            </summary>
            <returns></returns>
        </member>
        <member name="P:Spherical.Outline.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.Patch">
            <summary>
            Patch class holds a list of arcs and the bounding circle as well as the area
            </summary>
        </member>
        <member name="M:Spherical.Patch.#ctor(Spherical.Arc[])">
            <summary>
            Create patch from a list of arcs, derive area and bounding circle.
            It checks if arcs are really connected if requested.
            </summary>
            <param name="list"></param>
        </member>
        <member name="M:Spherical.Patch.#ctor(Spherical.Arc[],System.Double)">
            <summary>
            Create patch from a list of arcs, derive area and bounding circle.
            It checks if arcs are really connected if requested.
            </summary>
            <param name="list"></param>
        </member>
        <member name="M:Spherical.Patch.#ctor(Spherical.Patch)">
            <summary>
            Copy constructor
            </summary>
            <param name="p"></param>
        </member>
        <member name="M:Spherical.Patch.CalcArea(Spherical.Cartesian,System.Double)">
            <summary>
            Measure area of patch using the given pivot point
            </summary>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Patch.CalcArea(Spherical.Cartesian)">
            <summary>
            Measure area of patch using the given pivot point
            </summary>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Patch.CalcArea(Spherical.Arc[],Spherical.Cartesian,System.Double)">
            <summary>
            Measure area of patch using the given pivot point
            </summary>
            
            <param name="p"></param>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Patch.CalcAreaLength(Spherical.Arc[],Spherical.Cartesian,System.Double,@,@)">
            <summary>
            Measure area of patch using the given pivot point and add up length
            </summary>
            <param name="p"></param>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Patch.Clone(Spherical.Patch)">
            <summary>
            Return a clone
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Patch.VerifyOkay">
            <summary>
            Check if arcs are really connected
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Patch.ToString">
            <summary>
            String representation
            </summary>
            <returns></returns>
        </member>
        <member name="P:Spherical.Patch.MecFillingFactor">
            <summary>
            Area ratio of patch and minimal enclosing circle is the filling factor
            </summary>
        </member>
        <member name="P:Spherical.Patch.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
        <member name="T:Spherical.Halfspace">
            <summary>
            Struct to hold a Halfspace that consists of a 
            center point and the cosine of the angle
            </summary>
        </member>
        <member name="M:Spherical.Halfspace.#ctor(System.Double,System.Double,System.Double,System.Boolean,System.Double)">
            <summary>
            Create halfspace from xyz and cosine of angle.
            Normalize if requested.
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <param name="normalize"></param>
            <param name="cos0"></param>
        </member>
        <member name="M:Spherical.Halfspace.#ctor(Spherical.Cartesian,System.Double)">
            <summary>
            Create Halfspace from a center point and cosine of angle
            </summary>
            <param name="center"></param>
            <param name="d"></param>
        </member>
        <member name="M:Spherical.Halfspace.#ctor(System.Double,System.Double,System.Double)">
            <summary>
            Create Halfspace from center (RA,Dec) and radius in arcmin
            </summary>
            <param name="ra"></param>
            <param name="dec"></param>
            <param name="arcmin"></param>
        </member>
        <member name="M:Spherical.Halfspace.#ctor(Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Smallest circle that goes through 2 points
            </summary>
            <param name="p0"></param>
            <param name="p1"></param>
        </member>
        <member name="M:Spherical.Halfspace.#ctor(Spherical.Cartesian,Spherical.Cartesian,Spherical.Cartesian)">
            <summary>
            Small circle constraint that goes through 3 points.
            </summary>
            <param name="p0"></param>
            <param name="p1"></param>
            <param name="p2"></param>
        </member>
        <member name="M:Spherical.Halfspace.Invert">
            <summary>
            Invert this halfspace (complementer on sphere)
            Operation: center *= -1 and cos0 *= -1
            </summary>
        </member>
        <member name="M:Spherical.Halfspace.Inverse">
            <summary>
            Return inverse (complementer) of this halfspace
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Grow(System.Double)">
            <summary>
            Increase the angle by the given amount, and return this
            </summary>
            <param name="arcmin"></param>
        </member>
        <member name="M:Spherical.Halfspace.Covers(System.Double,System.Double,System.Double,System.Double)">
            <summary>
            Check if Halfspace covers a point (x,y,z) unit vector with some tolerance
            </summary>
            <param name="x"></param>
            <param name="y"></param>
            <param name="z"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Covers(Spherical.Cartesian,System.Double)">
            <summary>
            Check if Halfspace covers a point within given tolerance limit
            </summary>
            <param name="p"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Covers(System.Collections.Generic.IEnumerable{Spherical.Cartesian},System.Double)">
            <summary>
            Check if this halfspace covers a list of points
            </summary>
            <param name="list"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.CoversHowMany(System.Collections.Generic.IEnumerable{Spherical.Cartesian},System.Double)">
            <summary>
            Count how many points are covered
            </summary>
            <param name="arr"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.MasksHowMany(System.Collections.Generic.IEnumerable{Spherical.Cartesian},System.Double)">
            <summary>
            Count how many points are excluded by this constraint
            </summary>
            <param name="arr"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.MasksHowMany(System.Collections.Generic.IEnumerable{Spherical.Root},System.Double)">
            <summary>
            Count how many roots are excluded by this constraint
            </summary>
            <param name="arr"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Same(Spherical.Halfspace,System.Double)">
            <summary>
            Check if Halfspace is identical to another within a given tolerance
            </summary>
            <param name="h"></param>
            <param name="tolerance"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Covers(Spherical.Halfspace,System.Double)">
            <summary>
            Check if Halfspace covers another completely
            </summary>
            <param name="h"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Disjoint(Spherical.Halfspace,System.Double)">
            <summary>
            Check if Halfspace is disjoint from another
            </summary>
            <param name="h"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.PointWest">
            <summary>
            Point on circle to the west from the center
            </summary>
        </member>
        <member name="M:Spherical.Halfspace.Root(Spherical.Halfspace)">
            <summary>
            Return a directed root or PointNaN if invalid. Call Roots() for better performance!
            </summary>
            <param name="h"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Roots(Spherical.Halfspace,Spherical.Cartesian@,Spherical.Cartesian@)">
            <summary>
            Find both roots in one go and return a status flag, where negative 
            values signal a problem (points are set to Cartesian.NaN)
            </summary>
            <param name="h"></param>
            <param name="pos"></param>
            <param name="neg"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.ToString">
            <summary>
            String representation is: x y z cos0
            </summary>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.Parse(System.String,System.Boolean)">
            <summary>
            Parse a string of "x y z d" into a Halfspace. 
            </summary>
            <param name="repr"></param>
            <returns></returns>
        </member>
        <member name="M:Spherical.Halfspace.ComparisonRadiusAscending(Spherical.Halfspace,Spherical.Halfspace)">
            <summary>
            Comparison by angle to be used for sorting
            </summary>
            <param name="h"></param>
            <param name="g"></param>
            <returns></returns>
        </member>
        <member name="P:Spherical.Halfspace.ESign">
            <summary>
            Extended sign property
            </summary>
        </member>
        <member name="P:Spherical.Halfspace.RadiusInRadian">
            <summary>
            Radius of circle in radians
            </summary>
        </member>
        <member name="P:Spherical.Halfspace.Revision">
            <summary>
            Revision from CVS
            </summary>
        </member>
    </members>
</doc>
