Operator Reference

distance_ccdistance_ccDistanceCcDistanceCcdistance_cc (Operator)

distance_ccdistance_ccDistanceCcDistanceCcdistance_cc — Calculate the distance between two contours.

Signature

Herror distance_cc(const Hobject Contour1, const Hobject Contour2, const char* Mode, double* DistanceMin, double* DistanceMax)

Herror T_distance_cc(const Hobject Contour1, const Hobject Contour2, const Htuple Mode, Htuple* DistanceMin, Htuple* DistanceMax)

void DistanceCc(const HObject& Contour1, const HObject& Contour2, const HTuple& Mode, HTuple* DistanceMin, HTuple* DistanceMax)

void HXLDCont::DistanceCc(const HXLDCont& Contour2, const HTuple& Mode, HTuple* DistanceMin, HTuple* DistanceMax) const

void HXLDCont::DistanceCc(const HXLDCont& Contour2, const HString& Mode, double* DistanceMin, double* DistanceMax) const

void HXLDCont::DistanceCc(const HXLDCont& Contour2, const char* Mode, double* DistanceMin, double* DistanceMax) const

void HXLDCont::DistanceCc(const HXLDCont& Contour2, const wchar_t* Mode, double* DistanceMin, double* DistanceMax) const   ( Windows only)

static void HOperatorSet.DistanceCc(HObject contour1, HObject contour2, HTuple mode, out HTuple distanceMin, out HTuple distanceMax)

void HXLDCont.DistanceCc(HXLDCont contour2, HTuple mode, out HTuple distanceMin, out HTuple distanceMax)

void HXLDCont.DistanceCc(HXLDCont contour2, string mode, out double distanceMin, out double distanceMax)

def distance_cc(contour_1: HObject, contour_2: HObject, mode: MaybeSequence[str]) -> Tuple[Sequence[float], Sequence[float]]

def distance_cc_s(contour_1: HObject, contour_2: HObject, mode: MaybeSequence[str]) -> Tuple[float, float]

Description

The operator distance_ccdistance_ccDistanceCcDistanceCcdistance_cc calculates the minimum and maximum distance between the base points of two contours (Contour1Contour1Contour1contour1contour_1 and Contour2Contour2Contour2contour2contour_2). The parameters DistanceMinDistanceMinDistanceMindistanceMindistance_min and DistanceMaxDistanceMaxDistanceMaxdistanceMaxdistance_max contain the resulting distance.

The parameter ModeModeModemodemode sets the type of computing the distance: 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point" only determines the minimum and maximum distance between the base points of the contours. This results in faster algorithm, but may lead to inaccurate minimum distances. In contrast, 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment" determines the actual minimum distance between the contour segments.

In both cases, the search algorithm has a quadratic complexity (n*n). If only the minimum distance is required, the operator distance_cc_mindistance_cc_minDistanceCcMinDistanceCcMindistance_cc_min can be used alternatively since it offers algorithms with a complexity of n*log(n).

Parameter Broadcasting

This operator supports parameter broadcasting. This means that each parameter can be given as a tuple of length 1 or N. Parameters with tuple length 1 will be repeated internally such that the number of computed distances is always N.

Execution Information

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Processed without parallelization.

Parameters

Contour1Contour1Contour1contour1contour_1 (input_object)  xld_cont(-array) objectHXLDContHObjectHObjectHobject

First input contour.

Contour2Contour2Contour2contour2contour_2 (input_object)  xld_cont(-array) objectHXLDContHObjectHObjectHobject

Second input contour.

ModeModeModemodemode (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Distance calculation mode.

Default: 'point_to_point' "point_to_point" "point_to_point" "point_to_point" "point_to_point"

List of values: 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point", 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment"

DistanceMinDistanceMinDistanceMindistanceMindistance_min (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Minimum distance between both contours.

DistanceMaxDistanceMaxDistanceMaxdistanceMaxdistance_max (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Maximum distance between both contours.

Example (C)

gen_contour_polygon_rounded_xld(Cont1, [0,100,100,0,0], [0,0,100,100,0],
                                [50,50,50,50,50], 0.5);
gen_contour_polygon_rounded_xld(Cont2, [41,91,91,41,41], [41,41,91,91,41],
                                [25,25,25,25,25], 0.5);
distance_cc(Cont1, Cont2, 'point_to_point', &distance_min, &distance_max);

Result

distance_ccdistance_ccDistanceCcDistanceCcdistance_cc returns 2 ( H_MSG_TRUE) .

Alternatives

distance_scdistance_scDistanceScDistanceScdistance_sc, distance_pcdistance_pcDistancePcDistancePcdistance_pc, distance_cc_mindistance_cc_minDistanceCcMinDistanceCcMindistance_cc_min, distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXlddistance_contours_xld

See also

distance_srdistance_srDistanceSrDistanceSrdistance_sr, distance_prdistance_prDistancePrDistancePrdistance_pr

Module

Foundation