From e1476509e5b668c3ce4d3add32b4ab9f7bce4ad4 Mon Sep 17 00:00:00 2001 From: Julien STAUB Date: Sun, 16 Aug 2026 17:15:50 +0200 Subject: [PATCH 1/6] code homogeneity --- surfacemanager.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/surfacemanager.cpp b/surfacemanager.cpp index 06deb989..e2a24d5c 100644 --- a/surfacemanager.cpp +++ b/surfacemanager.cpp @@ -758,10 +758,10 @@ void SurfaceManager::ObstructionChanged(){ void SurfaceManager::centerMaskValue(int val){ insideOffset = val; - double mmPerPixel = getCurrent()->diameter/(2 *( m_wavefronts[m_currentNdx]->m_outside.m_radius-1)); - m_surfaceTools->m_centerMaskLabel->setText(QString("%1 mm").arg(mmPerPixel* val, 6, 'f', 2)); - makeMask(m_currentNdx); wavefront *wf = m_wavefronts[m_currentNdx]; + double mmPerPixel = wf->diameter/(2 *(wf->m_outside.m_radius-1)); + m_surfaceTools->m_centerMaskLabel->setText(QString("%1 mm").arg(mmPerPixel* val, 6, 'f', 2)); + makeMask(wf); wf->dirtyZerns = true; wf->wasSmoothed = false; //emit generateSurfacefromWavefront(m_currentNdx, this); @@ -771,10 +771,10 @@ void SurfaceManager::centerMaskValue(int val){ void SurfaceManager::outsideMaskValue(int val){ outsideOffset = val; - double mmPerPixel = m_wavefronts[m_currentNdx]->diameter/(2 * (m_wavefronts[m_currentNdx]->m_outside.m_radius)); - m_surfaceTools->m_edgeMaskLabel->setText(QString("%1 mm").arg(mmPerPixel* val, 6, 'f', 2)); - makeMask(m_currentNdx); wavefront *wf = m_wavefronts[m_currentNdx]; + double mmPerPixel = wf->diameter/(2 * (wf->m_outside.m_radius)); + m_surfaceTools->m_edgeMaskLabel->setText(QString("%1 mm").arg(mmPerPixel* val, 6, 'f', 2)); + makeMask(wf); wf->dirtyZerns = true; wf->wasSmoothed = false; //emit generateSurfacefromWavefront(m_currentNdx, this); From 4462f630ee4110519f7fad7b95ec36d745daadc7 Mon Sep 17 00:00:00 2001 From: Julien STAUB Date: Sun, 16 Aug 2026 18:03:23 +0200 Subject: [PATCH 2/6] unused variables --- surfacemanager.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/surfacemanager.cpp b/surfacemanager.cpp index e2a24d5c..f8d6151e 100644 --- a/surfacemanager.cpp +++ b/surfacemanager.cpp @@ -77,8 +77,6 @@ #include "utils.h" #include "cnpy.h" -cv::Mat theMask; -cv::Mat deb; double outputLambda; double bilinear(cv::Mat mat, cv::Mat mask, double x, double y) { @@ -715,7 +713,6 @@ void SurfaceManager::makeMask(wavefront *wf, bool useInsideCircle){ //line(wf->workMask, Point(s/2, 0), Point(s/2,s),cv::Scalar(0,0,0), 10); // line(wf->workMask, Point(0, s/2), Point(s,s/2),cv::Scalar(0,0,0), 10); //line(wf->workMask, Point(0, 0), Point(s,s),cv::Scalar(0,0,0), 10); - theMask = mask.clone(); // add central obstruction (not to be confused with a hole in the mirror - this comes from mirror configuration) From e1126be37deba1814e75c0f67c3496431f86f1ef Mon Sep 17 00:00:00 2001 From: Julien STAUB Date: Sun, 16 Aug 2026 18:17:00 +0200 Subject: [PATCH 3/6] correct ignore region center edge radius --- surfacemanager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/surfacemanager.cpp b/surfacemanager.cpp index f8d6151e..d51b16af 100644 --- a/surfacemanager.cpp +++ b/surfacemanager.cpp @@ -637,8 +637,9 @@ void SurfaceManager::makeMask(wavefront *wf, bool useInsideCircle){ ym = wf->m_outside.m_center.y(); double radm =wf->m_outside.m_radius + outsideOffset-2; double rado = wf->m_inside.m_radius + insideOffset; - if (rado > 0) - rado += (insideOffset + 1); + if(rado > 0){ + rado += 1; + } double cx = wf->m_inside.m_center.x(); double cy = wf->m_inside.m_center.y(); From 658ddf4a167fc539fafc2f9839f35a7a62b348a2 Mon Sep 17 00:00:00 2001 From: Julien STAUB Date: Sun, 16 Aug 2026 18:30:01 +0200 Subject: [PATCH 4/6] fix ignore edge region center edge coordinates when no hole --- surfacemanager.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/surfacemanager.cpp b/surfacemanager.cpp index d51b16af..7433b087 100644 --- a/surfacemanager.cpp +++ b/surfacemanager.cpp @@ -641,8 +641,6 @@ void SurfaceManager::makeMask(wavefront *wf, bool useInsideCircle){ rado += 1; } - double cx = wf->m_inside.m_center.x(); - double cy = wf->m_inside.m_center.y(); cv::Mat mask = cv::Mat::zeros(height,width,CV_8U); mirrorDlg &md = *mirrorDlg::get_Instance(); double rx = radm; @@ -668,7 +666,8 @@ void SurfaceManager::makeMask(wavefront *wf, bool useInsideCircle){ if (rado > 0 && useInsideCircle) { uchar color = 0; - fillCircle(mask, cx,cy,rado, &color); + // inside circle is not always defined. So we use outside circle coordinates. They are concentric. + fillCircle(mask, xm, ym, rado, &color); } // expand the region by 10% From 77b10c454e6fc4ab1db7453200eda546d6cb44c9 Mon Sep 17 00:00:00 2001 From: Julien STAUB Date: Sun, 16 Aug 2026 18:41:23 +0200 Subject: [PATCH 5/6] put variables only in path where they are used --- surfacemanager.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/surfacemanager.cpp b/surfacemanager.cpp index 7433b087..4c19a1d1 100644 --- a/surfacemanager.cpp +++ b/surfacemanager.cpp @@ -643,15 +643,16 @@ void SurfaceManager::makeMask(wavefront *wf, bool useInsideCircle){ cv::Mat mask = cv::Mat::zeros(height,width,CV_8U); mirrorDlg &md = *mirrorDlg::get_Instance(); - double rx = radm; - double rx2 = rx * rx; - double ry = rx * md.m_verticalAxis/md.diameter; - double ry2 = ry * ry; + if (!mirrorDlg::get_Instance()->isEllipse()){ uchar v = 0xff; fillCircle(mask, xm,ym,radm, &v); } else { + double rx = radm; + double rx2 = rx * rx; + double ry = rx * md.m_verticalAxis/md.diameter; + double ry2 = ry * ry; for (int y = 0; y < height; ++y){ for (int x = 0; x < width; ++x){ From 479c7cf3d7e5e8b9ef555a941c6f427aa021f82b Mon Sep 17 00:00:00 2001 From: Julien STAUB Date: Sun, 16 Aug 2026 18:51:21 +0200 Subject: [PATCH 6/6] add warning message in try/catch --- surfacemanager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/surfacemanager.cpp b/surfacemanager.cpp index 4c19a1d1..5eee2e9b 100644 --- a/surfacemanager.cpp +++ b/surfacemanager.cpp @@ -1646,6 +1646,7 @@ void SurfaceManager::backGroundUpdate(){ zp.m_bDontProcessEvents=false; } catch (int i) { + qWarning() << "Exception caught in generateSurfacefromWavefront:" << i; break; } }