API reference - Class DEdge

Notation used in Ruby API documentation

Description: An edge class

An edge is a connection between points, usually participating in a larger context such as a polygon. An edge has a defined direction (from p1 to p2). Edges play a role in the database as parts of polygons and to describe a line through both points. The Edge object is also used inside the boolean processor (EdgeProcessor). Altough supported, edges are rarely used as individual database objects.

See The Database API for more details about the database objects like the Edge class.

Public constructors

new DEdgenewDefault constructor: creates a degenerated edge 0,0 to 0,0
new DEdgenew(double x1,
double y1,
double x2,
double y2)
Constructor with two coordinates given as single values
new DEdgenew(const DPoint p1,
const DPoint p2)
Constructor with two points

Public methods

[const]bool!=(const DEdge e)Inequality test
[const]DEdge*(double scale_factor)Scale edge
[const]bool<(const DEdge e)Less operator
[const]bool==(const DEdge e)Equality test
[const]voidassign(const DEdge other)Assign the contents of another object to self
[const]DBoxbboxReturn the bounding box of the edge.
[const]boolcoincident?(const DEdge e)Coincidence check.
[const]boolcontains?(const DPoint p)Test whether a point is on an edge.
[const]boolcontains_excl?(const DPoint p)Test whether a point is on an edge excluding the endpoints.
voidcreateEnsures the C++ object is created
[const]boolcrossed_by?(const DEdge e)Check, if an edge is cut by a line (given by an edge)
[const]DPointcrossing_point(const DEdge e)Returns the crossing point on two edges.
voiddestroyExplicitly destroy the object
[const]booldestroyed?Returns a value indicating whether the object was already destroyed
[const]doubledistance(const DPoint p)Distance between the edge and a point.
[const]doubledistance_abs(const DPoint p)Absolute distance between the edge and a point.
[const]DEdgedupCreates a copy of self
[const]doubledxThe horizontal extend of the edge.
[const]doubledx_absThe absolute value of the horizontal extend of the edge.
[const]doubledyThe vertical extend of the edge.
[const]doubledy_absThe absolute value of the vertical extend of the edge.
DEdgeenlarge(const DPoint p)Enlarges the edge.
[const]DEdgeenlarged(const DPoint p)Returns the enlarged edge (does not modify self)
DEdgeextend(double d)Extends the edge (modifies self)
[const]DEdgeextended(double d)Returns the extended edge (does not modify self)
[const]boolintersect?(const DEdge e)Intersection test.
[const]DPointintersection_point(const DEdge e)Returns the intersection point of two edges.
[const]boolis_const_object?Returns a value indicating whether the reference is a const reference
[const]boolis_degenerate?Test for degenerated edge
[const]boolis_parallel?(const DEdge e)Test for being parallel
[const]doublelengthThe length of the edge
DEdgemove(const DPoint p)Moves the edge.
DEdgemove(double dx,
double dy)
Moves the edge.
[const]DEdgemoved(const DPoint p)Returns the moved edge (does not modify self)
[const]DEdgemoved(double dx,
double dy)
Returns the moved edge (does not modify self)
[const]doubleortho_lengthThe orthogonal length of the edge ("manhattan-length")
[const]DPointp1The first point.
voidp1=(const DPoint point)Sets the first point.
[const]DPointp2The second point.
voidp2=(const DPoint point)Sets the second point.
DEdgeshift(double d)Shifts the edge (modifies self)
[const]DEdgeshifted(double d)Returns the shifted edge (does not modify self)
[const]intside_of(const DPoint p)Indicates at which side the point is located relative to the edge.
[const]doublesq_lengthThe square of the length of the edge
DEdgeswap_pointsSwap the points of the edge
[const]DEdgeswapped_pointsReturns an edge in which both points are swapped
[const]stringto_sReturns a string representing the edge
[const]DEdgetransformed(const DTrans t)Transform the edge.
[const]DEdgetransformed(const DCplxTrans t)Transform the edge.
[const]doublex1Shortcut for p1.x
voidx1=(double coord)Sets p1.x
[const]doublex2Shortcut for p2.x
voidx2=(double coord)Sets p2.x
[const]doubley1Shortcut for p1.y
voidy1=(double coord)Sets p1.y
[const]doubley2Shortcut for p2.y
voidy2=(double coord)Sets p2.y

Public static methods and constants

DEdgefrom_iedge(const Edge int_edge)Construct a floating-point coordinate edge from an integer coordinate edge
new DEdgefrom_s(string s)Creates an object from a string

Deprecated methods (protected, public, static, non-static and constructors)

[static]new DEdgenew_pp(const DPoint p1,
const DPoint p2)
Use of this method is deprecated. Use new instead
[static]new DEdgenew_xyxy(double x1,
double y1,
double x2,
double y2)
Use of this method is deprecated. Use new instead
[const]DEdgetransformed_cplx(const DCplxTrans t)Use of this method is deprecated. Use transformed instead

Detailed description

[const] bool !=(const DEdge e)

Description: Inequality test

e:The object to compare against

[const] DEdge *(double scale_factor)

Description: Scale edge

scale_factor:The scaling factor
Returns:The scaled edge

The * operator scales self with the given factor.

This method has been introduced in version 0.22.

[const] bool <(const DEdge e)

Description: Less operator

e:The object to compare against
Returns:True, if the edge is 'less' as the other edge with respect to first and second point

[const] bool ==(const DEdge e)

Description: Equality test

e:The object to compare against

[const] void assign(const DEdge other)

Description: Assign the contents of another object to self

This method assigns the contents of another object to self. This is a deep copy that does not only copy the reference but the actual content.

[const] DBox bbox

Description: Return the bounding box of the edge.

[const] bool coincident?(const DEdge e)

Description: Coincidence check.

e:the edge to test with
Returns:True if the edges are coincident.

Checks whether a edge is coincident with another edge. Coincidence is defined by being parallel and that at least one point of one edge is on the other edge.

[const] bool contains?(const DPoint p)

Description: Test whether a point is on an edge.

p:The point to test with the edge.
Returns:True if the point is on the edge.

A point is on a edge if it is on (or at least closer than a grid point to) the edge.

[const] bool contains_excl?(const DPoint p)

Description: Test whether a point is on an edge excluding the endpoints.

p:The point to test with the edge.
Returns:True if the point is on the edge but not equal p1 or p2.

A point is on a edge if it is on (or at least closer than a grid point to) the edge.

void create

Description: Ensures the C++ object is created

Use this method to ensure the C++ object is created, for example to ensure that resources are allocated. Usually C++ objects are created on demand and not necessarily when the script object is created.

[const] bool crossed_by?(const DEdge e)

Description: Check, if an edge is cut by a line (given by an edge)

e:The edge representing the line that the edge must be crossing.

This method returns true if p1 is in one semispace while p2 is in the other or one of them is on the line through the edge "e"

[const] DPoint crossing_point(const DEdge e)

Description: Returns the crossing point on two edges.

e:The edge representing the line that self must be crossing.
Returns:The point where self crosses the line given by "e".

This method delivers the point where the given edge (self) crosses the line given by the edge in argument "e". If self does not cross this line, the result is undefined. See crossed_by? for a description of the crossing predicate.

This method has been introduced in version 0.19.

void destroy

Description: Explicitly destroy the object

Explicitly destroy the object on C++ side if it was owned by the Ruby interpreter. Subsequent access to this object will throw an exception. If the object is not owned by Ruby, this method will do nothing.

[const] bool destroyed?

Description: Returns a value indicating whether the object was already destroyed

This method returns true, if the object was destroyed, either explicitly or by the C++ side. The latter may happen, if the object is owned by a C++ object which got destroyed itself.

[const] double distance(const DPoint p)

Description: Distance between the edge and a point.

p:The point to test.
Returns:The distance

Returns the distance between the edge and the point. The distance is signed which is negative if the point is to the "left" of the edge and positive if the point is to the "right". The distance is measured by projecting the point onto the line through the edge. If the edge is degenerated, the distance is not defined.

[const] double distance_abs(const DPoint p)

Description: Absolute distance between the edge and a point.

p:The point to test.
Returns:The distance

Returns the distance between the edge and the point.

[const] DEdge dup

Description: Creates a copy of self

[const] double dx

Description: The horizontal extend of the edge.

[const] double dx_abs

Description: The absolute value of the horizontal extend of the edge.

[const] double dy

Description: The vertical extend of the edge.

[const] double dy_abs

Description: The absolute value of the vertical extend of the edge.

DEdge enlarge(const DPoint p)

Description: Enlarges the edge.

p:The distance to move the edge points.
Returns:The enlarged edge.

Enlarges the edge by the given distance and returns the enlarged edge. The edge is overwritten. Enlargement means that the first point is shifted by -p, the second by p.

[const] DEdge enlarged(const DPoint p)

Description: Returns the enlarged edge (does not modify self)

p:The distance to move the edge points.
Returns:The enlarged edge.

Enlarges the edge by the given offset and returns the enlarged edge. The edge is not modified. Enlargement means that the first point is shifted by -p, the second by p.

DEdge extend(double d)

Description: Extends the edge (modifies self)

d:The distance by which to shift the end points.
Returns:The extended edge (self).

Extends the edge by the given distance and returns the extended edge. The edge is not modified. Extending means that the first point is shifted by -d along the edge, the second by d. The length of the edge will increase by 2*d.

extended is a version that does not modify self but returns the extended edges.

This method has been introduced in version 0.23.

[const] DEdge extended(double d)

Description: Returns the extended edge (does not modify self)

d:The distance by which to shift the end points.
Returns:The extended edge.

Extends the edge by the given distance and returns the extended edge. The edge is not modified. Extending means that the first point is shifted by -d along the edge, the second by d. The length of the edge will increase by 2*d.

extend is a version that modifies self (in-place).

This method has been introduced in version 0.23.

[static] DEdge from_iedge(const Edge int_edge)

Description: Construct a floating-point coordinate edge from an integer coordinate edge

Create a floating-point coordinate edge from an integer edge

[static] new DEdge from_s(string s)

Description: Creates an object from a string

Creates the object from a string representation (as returned by to_s)

This method has been added in version 0.23.

[const] bool intersect?(const DEdge e)

Description: Intersection test.

e:The edge to test.

Returns true if the edges intersect. Two edges intersect if they share at least one point. If the edges coincide, they also intersect. For degenerated edges, the intersection is mapped to point containment tests.

[const] DPoint intersection_point(const DEdge e)

Description: Returns the intersection point of two edges.

e:The edge to test.
Returns:The point where the edges intersect.

This method delivers the intersection point. If the edges do not intersect, the result is undefined.

This method has been introduced in version 0.19.

[const] bool is_const_object?

Description: Returns a value indicating whether the reference is a const reference

This method returns true, if self is a const reference. In that case, only const methods may be called on self.

[const] bool is_degenerate?

Description: Test for degenerated edge

An edge is degenerate, if both end and start point are identical.

[const] bool is_parallel?(const DEdge e)

Description: Test for being parallel

e:The edge to test against
Returns:True if both edges are parallel

[const] double length

Description: The length of the edge

DEdge move(const DPoint p)

Description: Moves the edge.

p:The distance to move the edge.
Returns:The moved edge.

Moves the edge by the given offset and returns the moved edge. The edge is overwritten.

DEdge move(double dx,double dy)

Description: Moves the edge.

dx:The x distance to move the edge.
dy:The y distance to move the edge.
Returns:The moved edge.

Moves the edge by the given offset and returns the moved edge. The edge is overwritten.

This version has been added in version 0.23.

[const] DEdge moved(const DPoint p)

Description: Returns the moved edge (does not modify self)

p:The distance to move the edge.
Returns:The moved edge.

Moves the edge by the given offset and returns the moved edge. The edge is not modified.

[const] DEdge moved(double dx,double dy)

Description: Returns the moved edge (does not modify self)

dx:The x distance to move the edge.
dy:The y distance to move the edge.
Returns:The moved edge.

Moves the edge by the given offset and returns the moved edge. The edge is not modified.

This version has been added in version 0.23.

[static] new DEdge new

Description: Default constructor: creates a degenerated edge 0,0 to 0,0

[static] new DEdge new(double x1,double y1,double x2,double y2)

Description: Constructor with two coordinates given as single values

Two points are given to create a new edge.

[static] new DEdge new(const DPoint p1,const DPoint p2)

Description: Constructor with two points

Two points are given to create a new edge.

[static] new DEdge new_pp(const DPoint p1,const DPoint p2)

Description: Constructor with two points

This method is deprecated. Use method 'new' instead

[static] new DEdge new_xyxy(double x1,double y1,double x2,double y2)

Description: Constructor with two coordinates given as single values

This method is deprecated. Use method 'new' instead

[const] double ortho_length

Description: The orthogonal length of the edge ("manhattan-length")

Returns:The orthogonal length (abs(dx)+abs(dy))

[const] DPoint p1

Description: The first point.

void p1=(const DPoint point)

Description: Sets the first point.

This method has been added in version 0.23.

[const] DPoint p2

Description: The second point.

void p2=(const DPoint point)

Description: Sets the second point.

This method has been added in version 0.23.

DEdge shift(double d)

Description: Shifts the edge (modifies self)

d:The distance by which to shift the edge.
Returns:The shifted edge (self).

Shifts the edge by the given distance and returns the shifted edge. The edge is not modified. Shifting by a positive value will produce an edge which is shifted by d to the left. Shifting by a negative value will produce an edge which is shifted by d to the right.

shifted is a version that does not modify self but returns the extended edges.

This method has been introduced in version 0.23.

[const] DEdge shifted(double d)

Description: Returns the shifted edge (does not modify self)

d:The distance by which to shift the edge.
Returns:The shifted edge.

Shifts the edge by the given distance and returns the shifted edge. The edge is not modified. Shifting by a positive value will produce an edge which is shifted by d to the left. Shifting by a negative value will produce an edge which is shifted by d to the right.

shift is a version that modifies self (in-place).

This method has been introduced in version 0.23.

[const] int side_of(const DPoint p)

Description: Indicates at which side the point is located relative to the edge.

p:The point to test.
Returns:The side value

Returns 1 if the point is "left" of the edge, 0 if on and -1 if the point is "right" of the edge.

[const] double sq_length

Description: The square of the length of the edge

DEdge swap_points

Description: Swap the points of the edge

This version modifies self. A version that does not modify self is swapped_points. Swapping the points basically reverses the direction of the edge.

This method has been introduced in version 0.23.

[const] DEdge swapped_points

Description: Returns an edge in which both points are swapped

Swapping the points basically reverses the direction of the edge.

This method has been introduced in version 0.23.

[const] string to_s

Description: Returns a string representing the edge

[const] DEdge transformed(const DTrans t)

Description: Transform the edge.

t:The transformation to apply.
Returns:The transformed edge.

Transforms the edge with the given transformation. Does not modify the edge but returns the transformed edge.

[const] DEdge transformed(const DCplxTrans t)

Description: Transform the edge.

t:The transformation to apply.
Returns:The transformed edge.

Transforms the edge with the given complex transformation. Does not modify the edge but returns the transformed edge.

[const] DEdge transformed_cplx(const DCplxTrans t)

Description: Transform the edge.

t:The transformation to apply.
Returns:The transformed edge.

This method is deprecated. Use method 'transformed' instead

[const] double x1

Description: Shortcut for p1.x

void x1=(double coord)

Description: Sets p1.x

This method has been added in version 0.23.

[const] double x2

Description: Shortcut for p2.x

void x2=(double coord)

Description: Sets p2.x

This method has been added in version 0.23.

[const] double y1

Description: Shortcut for p1.y

void y1=(double coord)

Description: Sets p1.y

This method has been added in version 0.23.

[const] double y2

Description: Shortcut for p2.y

void y2=(double coord)

Description: Sets p2.y

This method has been added in version 0.23.