From 110b55f69dc6536077cf3f4120897bcb8fc63ca1 Mon Sep 17 00:00:00 2001 From: gabryon99 Date: Thu, 15 Jul 2021 17:17:51 +0200 Subject: [PATCH] fix for RAE/XYZ coordinates --- src/meshlabplugins/io_e57/io_e57.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/meshlabplugins/io_e57/io_e57.cpp b/src/meshlabplugins/io_e57/io_e57.cpp index 59faf7b00..643ddca8a 100755 --- a/src/meshlabplugins/io_e57/io_e57.cpp +++ b/src/meshlabplugins/io_e57/io_e57.cpp @@ -447,15 +447,25 @@ void E57IOPlugin::loadMesh(MeshModel &m, int &mask, int scanIndex, size_t buffSi coordinates[1] = pointsData.cartesianY[i]; coordinates[2] = pointsData.cartesianZ[i]; } - } - else if (data3DPoints.areSphericalCoordinatesAvailable()) { - - if (pointsData.sphericalInvalidState == nullptr || pointsData.sphericalInvalidState[i] == 0) { - coordinates.FromPolarRad(pointsData.sphericalRange[i], pointsData.sphericalAzimuth[i], pointsData.sphericalElevation[i]); + else { + continue; } } - else { - continue; + else if (data3DPoints.areSphericalCoordinatesAvailable()) { + if (pointsData.sphericalInvalidState == nullptr || pointsData.sphericalInvalidState[i] == 0) { + + auto range = pointsData.sphericalRange[i]; + auto phi = pointsData.sphericalElevation[i]; + auto theta = pointsData.sphericalAzimuth[i]; + + coordinates[0] = range * std::cos(phi) * std::cos(theta); + coordinates[1] = range * std::cos(phi) * std::sin(theta); + coordinates[2] = range * sin(phi); + + } + else { + continue; + } } auto vertex = vcg::tri::Allocator::AddVertex(m.cm, coordinates);