You are here: Start » AVL.NET » Function Reference » Path » Path Combinators » AVL.JoinAdjacentPaths

AVL.JoinAdjacentPaths

Joins those paths of an array which endpoints lie near enough.

Namespace:AvlNet
Assembly:AVL.NET.dll

Syntax

C++
C#
 
public static void JoinAdjacentPaths
(
	IList<AvlNet.Path> inPaths,
	float inMaxDistance,
	float inMaxAngle,
	float? inMaxDeviation,
	float inExcessTrim,
	float? inEndingLength,
	AvlNet.PathJoiningMethod inJoiningMethod,
	AvlNet.PathJoiningAngleMeasure inAngleMeasure,
	bool inIgnorePathEndsOrder,
	bool inAllowCycles,
	float inMinPathLength,
	IList<AvlNet.Path> outPaths,
	NullableRef<SafeList<AvlNet.Path>> outMatchedPieces
)

Parameters

Name Type Range Default Description
inPathsSystem.Collections.Generic.IList<AvlNet.Path>
inMaxDistancefloat<0.0f, INF>10.0fMaximal distance between paths that can be joined. Default value: 10.0f.
inMaxAnglefloat<0.0f, 180.0f>30.0fMaximal allowed angle between paths being joined. Default value: 30.0f.
inMaxDeviationfloat?<0.0f, INF>Maximal allowed thickness of a minimal stripe containing both paths being joined. Default value: atl::NIL.
inExcessTrimfloat<0.0f, INF>Length of the part of each path to be removed from its both sides.
inEndingLengthfloat?<0.0f, INF>0.0fDetermines the length of the path end used for path angle computing. Default value: 0.0f.
inJoiningMethodAvlNet.PathJoiningMethodAddBridgeDetermines a method to join two paths in one. Default value: AddBridge.
inAngleMeasureAvlNet.PathJoiningAngleMeasureInputPathOrientationDetermines a method to measure the angle between two input paths. Default value: InputPathOrientation.
inIgnorePathEndsOrderboolTrueIf set to false, only the end of a path can be joined with the begin of another path. Default value: True.
inAllowCyclesboolTrueDetermines if cycles can be created during joining process. Default value: True.
inMinPathLengthfloat<0.0f, INF>0.0fMinimal length of a path. Default value: 0.0f.
outPathsSystem.Collections.Generic.IList<AvlNet.Path>
outMatchedPiecesAvlNet.NullableRef<AvlNet.SafeList<AvlNet.Path>>Input paths that have been joined with another path. Can be null to skip this parameter calculation.

Description

The operation repeatedly connects the pair of endpoints of open paths of an array until no such pair can be connected. If an endpoint can be joined with more than one another, the endpoint which generates smallest joining value is chosen. The joining value is computed by combining distance between endpoints being joined, their angle difference and their deviation value. An endpoint can be joined with another one in its vicinity only if the distance between them is not greater than inMaxDistance. Their angle difference, which is computed in one of available ways depending on inAngleMeasure value, cannot be greater than inMaxAngle. Their deviation value, which is the thickness of a minimal stripe containing both path endings being joined, cannot exceed inMaxDeviation.

The deviation value for two orange segments is the distance between two parallel blue lines.

Before joining process begins, the input paths are shortened by inExcessTrim on both their ends. The parameter makes it possible to use the filter for paths that can be a bit curly on their ends.

Only orange part of the path takes part in joining process. The curly blue path ending is removed by inExcessTrim parameter.

While joining takes place, the inEndingLength parameter determines what part of the path ending is used to determine the angle between two paths. If it is set to Nil, the segment connecting path begin and path end is decisive.

The last orange segment is taken into account while determining angle between two paths. The omitted blue path ending has length inEndingLength.

There are also two flags controlling the joining process. If the inIgnorePathEndsOrder is set, a path begin can also be joined with another path begin and a path end with another path end. Otherwise a path begin can be joined with a path end only. The inAllowCycles parameter determines if a cycle is allowed to emerge during joining. Finally, after the joining phase paths that are shorter than inMinPathLength are removed from the final results.

Examples

JoinAdjacentPaths run on the sample path array with inMaxDistance = 25.

JoinAdjacentPaths run on the sample path array with inMaxDistance = 1000.

Function Overrides

See also