MCPcopy Create free account
hub / github.com/PointCloudLibrary/pcl / addToMesh

Method addToMesh

apps/in_hand_scanner/src/integration.cpp:494–547  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

492////////////////////////////////////////////////////////////////////////////////
493
494void
495pcl::ihs::Integration::addToMesh(const PointIHS& pt_0,
496 const PointIHS& pt_1,
497 const PointIHS& pt_2,
498 const PointIHS& pt_3,
499 VertexIndex& vi_0,
500 VertexIndex& vi_1,
501 VertexIndex& vi_2,
502 VertexIndex& vi_3,
503 const MeshPtr& mesh) const
504{
505 // Treated bitwise
506 // 2 - 1
507 // | |
508 // 3 - 0
509 const unsigned char is_finite =
510 static_cast<unsigned char>((1 * !std::isnan(pt_0.x)) | (2 * !std::isnan(pt_1.x)) |
511 (4 * !std::isnan(pt_2.x)) | (8 * !std::isnan(pt_3.x)));
512
513 switch (is_finite) {
514 case 7:
515 this->addToMesh(pt_0, pt_1, pt_2, vi_0, vi_1, vi_2, mesh);
516 break; // 0-1-2
517 case 11:
518 this->addToMesh(pt_0, pt_1, pt_3, vi_0, vi_1, vi_3, mesh);
519 break; // 0-1-3
520 case 13:
521 this->addToMesh(pt_0, pt_2, pt_3, vi_0, vi_2, vi_3, mesh);
522 break; // 0-2-3
523 case 14:
524 this->addToMesh(pt_1, pt_2, pt_3, vi_1, vi_2, vi_3, mesh);
525 break; // 1-2-3
526 case 15: // 0-1-2-3
527 {
528 if (!distanceThreshold(pt_0, pt_1, pt_2, pt_3))
529 break;
530 if (!vi_0.isValid())
531 vi_0 = mesh->addVertex(pt_0);
532 if (!vi_1.isValid())
533 vi_1 = mesh->addVertex(pt_1);
534 if (!vi_2.isValid())
535 vi_2 = mesh->addVertex(pt_2);
536 if (!vi_3.isValid())
537 vi_3 = mesh->addVertex(pt_3);
538 if (vi_0 == vi_1 || vi_0 == vi_2 || vi_0 == vi_3 || vi_1 == vi_2 || vi_1 == vi_3 ||
539 vi_2 == vi_3) {
540 return;
541 }
542 mesh->addTrianglePair(vi_0, vi_1, vi_2, vi_3);
543
544 break;
545 }
546 }
547}
548
549////////////////////////////////////////////////////////////////////////////////
550

Callers 2

reconstructMeshMethod · 0.95
mergeMethod · 0.95

Calls 4

addVertexMethod · 0.80
addTrianglePairMethod · 0.80
isValidMethod · 0.45
addFaceMethod · 0.45

Tested by

no test coverage detected