MCPcopy Create free account
hub / github.com/FreeFem/FreeFem-sources / CloseTo3

Function CloseTo3

plugin/seq/ClosePoints.cpp:628–680  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

626}
627
628KN< long > *CloseTo3(Stack stack, double const &eps, KNM_< double > const &P,
629 KNM_< double > const &Q) {
630 long Pm0 = P.M( );
631 long Qm0 = Q.M( );
632 long Pn0 = P.N( );
633 long Qn0 = Q.N( );
634 ffassert(Pn0>=3 && Qn0>=3);
635 int po00 = 0;
636 int po10 = P.step * P.shapei.step;
637 int po20 = P.step * P.shapei.step*2;
638 int offset[3]={po00,po10,po20};
639 double x0 = P(0, ':').min( );
640 double y0 = P(1, ':').min( );
641 double z0 = P(2, ':').min( );
642 double x1 = P(0, ':').max( );
643 double y1 = P(1, ':').max( );
644 double z1 = P(2, ':').max( );
645
646 // add cc
647 double dd = max(max(x1 - x0, y1 - y0),z1-z0) * 0.01;
648
649 if (dd == 0) {
650 dd = max(max(abs(x0), abs(y0)), abs(z0))* 1e-8;
651 }
652
653 if (dd == 0) {
654 dd = 1e-8;
655 }
656
657 double data[] = {x0 - dd, y0 - dd,z0 - dd, x1 + dd, y1 + dd,z1 + dd};
658 R3close S(data, Pm0, eps, offset);
659
660 for (int i = 0; i < Pm0; ++i) {
661 if (verbosity > 19) {
662 cout << i << " :: " << P(0, i) << " " << P(1, i) << " " << P(2, i) << endl;
663 }
664
665 S.AddSimple(&P(0, i));
666 }
667
668 KN< long > *pr = new KN< long >(Qm0);
669
670 for (int i = 0; i < Qm0; ++i) {
671 R2close::Point *p = S.Find(Q(0, i), Q(1, i), Q(2, i));
672 if (p) {
673 (*pr)[i] = p - S.P;
674 } else {
675 (*pr)[i] = -1;
676 }
677 }
678
679 return Add2StackOfPtr2FreeRC(stack, pr);
680}
681
682KN< long > *CloseTo2t(Stack stack, double const &eps, KNM_< double > const &P,
683 KNM_< double > const &Q) {

Callers

nothing calls this directly

Calls 9

Add2StackOfPtr2FreeRCFunction · 0.85
maxFunction · 0.70
absFunction · 0.50
MMethod · 0.45
NMethod · 0.45
minMethod · 0.45
maxMethod · 0.45
AddSimpleMethod · 0.45
FindMethod · 0.45

Tested by

no test coverage detected