MCPcopy Create free account
hub / github.com/creatale/node-dv / DistanceSquared

Function DistanceSquared

deps/tesseract/classify/kdtree.cpp:451–470  ·  view source on GitHub ↗

---------------------------------------------------------------------------*/ *Returns the Euclidean distance squared between p1 and p2 for all essential * dimensions. * @param k keys are in k-space * @param dim dimension descriptions (essential, circular, etc) * @param p1,p2 two different points in K-D space */

Source from the content-addressed store, hash-verified

449 * @param p1,p2 two different points in K-D space
450 */
451FLOAT32 DistanceSquared(int k, PARAM_DESC *dim, FLOAT32 p1[], FLOAT32 p2[]) {
452 FLOAT32 total_distance = 0;
453
454 for (; k > 0; k--, p1++, p2++, dim++) {
455 if (dim->NonEssential)
456 continue;
457
458 FLOAT32 dimension_distance = *p1 - *p2;
459
460 /* if this dimension is circular - check wraparound distance */
461 if (dim->Circular) {
462 dimension_distance = Magnitude(dimension_distance);
463 FLOAT32 wrap_distance = dim->Max - dim->Min - dimension_distance;
464 dimension_distance = MIN(dimension_distance, wrap_distance);
465 }
466
467 total_distance += dimension_distance * dimension_distance;
468 }
469 return total_distance;
470}
471
472FLOAT32 ComputeDistance(int k, PARAM_DESC *dim, FLOAT32 p1[], FLOAT32 p2[]) {
473 return sqrt(DistanceSquared(k, dim, p1, p2));

Callers 2

SearchRecMethod · 0.85
ComputeDistanceFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected