Package winding provides primitives for determining the winding order of a set of points



This section is empty.


This section is empty.


func Orient

func Orient(pts ...[2]float64) int8

Orient will take the points and calculate the Orientation of the points. by summing the normal vectors. It will return 0 of the given points are colinear or 1, or -1 for clockwise and counter clockwise depending on the direction of the y axis. If the y axis increase as you go up on the graph then clockwise will be -1, otherwise it will be 1; vice versa for counter-clockwise.


type Order

type Order struct {
	YPositiveDown bool

Order configures how the orientation of a set of points is determined

func (Order) Clockwise

func (Order) Clockwise() Winding

Clockwise returns a clockwise winding

func (Order) Colinear

func (Order) Colinear() Winding

Colinear returns a colinear winding

func (Order) Collinear

func (Order) Collinear() Winding

Collinear is a alias for colinear

func (Order) CounterClockwise

func (Order) CounterClockwise() Winding

CounterClockwise returns a counter clockwise winding

func (Order) OfGeomPoints

func (order Order) OfGeomPoints(points ...geom.Point) Winding

OfGeomPoints returns the winding of the given geom points

func (Order) OfInt64Points

func (order Order) OfInt64Points(ipts ...[2]int64) Winding

OfInt64Points returns the winding of the given int64 points

func (Order) OfPoints

func (order Order) OfPoints(pts ...[2]float64) Winding

OfPoints returns the winding of the given points

func (Order) RectifyPolygon

func (order Order) RectifyPolygon(plyg2r [][][2]float64) [][][2]float64

RectifyPolygon will make sure that the rings are of the correct orientation, if not it will reverse them Colinear rings are dropped

func (Order) ThreePointsAreColinear

func (order Order) ThreePointsAreColinear(pt1, pt2, pt3 geom.Point) bool

type Winding

type Winding int8

Winding is the clockwise direction of a set of points.

const (

	// Clockwise indicates that the winding order is in the clockwise direction
	Clockwise Winding = -1
	// Colinear indicates that the points are colinear to each other
	Colinear Winding = 0
	// CounterClockwise indicates that the winding order is in the counter clockwise direction
	CounterClockwise Winding = 1

	// Collinear alternative spelling of Colinear
	Collinear = Colinear

func OfGeomPoints

func OfGeomPoints(points ...geom.Point) Winding

OfGeomPoints is the same as OfPoints, just a convenience to unwrap geom.Point

func OfPoints

func OfPoints(pts ...[2]float64) Winding

OfPoints returns the winding order of the given points

func Orientation

func Orientation(yPositiveDown bool, pts ...[2]float64) Winding

Orientation returns the orientation of the set of the points given the direction of the positive values of the y axis

func (Winding) IsClockwise

func (w Winding) IsClockwise() bool

IsClockwise checks if winding is clockwise

func (Winding) IsColinear

func (w Winding) IsColinear() bool

IsColinear check if the points are colinear

func (Winding) IsCounterClockwise

func (w Winding) IsCounterClockwise() bool

IsCounterClockwise checks if winding is counter clockwise

func (Winding) Not

func (w Winding) Not() Winding

Not returns the inverse of the winding, clockwise <-> counter-clockwise, colinear is it's own inverse

func (Winding) ShortString

func (w Winding) ShortString() string

func (Winding) String

func (w Winding) String() string

String implements the stringer interface