From fd25424ab5e5a1c4158c1e65b33b6568b5f9bc2b Mon Sep 17 00:00:00 2001 From: phkahler <14852918+phkahler@users.noreply.github.com> Date: Mon, 15 May 2023 19:00:39 -0400 Subject: [PATCH] small simplifications --- src/srf/boolean.cpp | 6 ++++-- src/srf/surfinter.cpp | 8 +++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/srf/boolean.cpp b/src/srf/boolean.cpp index 2bd15d8..667f6df 100644 --- a/src/srf/boolean.cpp +++ b/src/srf/boolean.cpp @@ -438,13 +438,12 @@ void SSurface::EdgeNormalsWithinSurface(Point2d auv, Point2d buv, double t; sc->exact.ClosestPointTo(*pt, &t, /*mustConverge=*/false); *pt = sc->exact.PointAt(t); - ClosestPointTo(*pt, &muv); } else if(!sc->isExact) { SSurface *trimmedA = sc->GetSurfaceA(sha, shb), *trimmedB = sc->GetSurfaceB(sha, shb); *pt = trimmedA->ClosestPointOnThisAndSurface(trimmedB, *pt); - ClosestPointTo(*pt, &muv); } + ClosestPointTo(*pt, &muv); *surfn = NormalAt(muv.x, muv.y); @@ -472,6 +471,9 @@ void SSurface::EdgeNormalsWithinSurface(Point2d auv, Point2d buv, pout = PointAt(muv.Plus(enuv)); *enin = pin.Minus(*pt), *enout = pout.Minus(*pt); +// ideally this should work (fail screwdriver file) +// *enin = enxyz.ScaledBy(-1.0); +// *enout = enxyz; } //----------------------------------------------------------------------------- diff --git a/src/srf/surfinter.cpp b/src/srf/surfinter.cpp index 9e03a83..5b6464d 100644 --- a/src/srf/surfinter.cpp +++ b/src/srf/surfinter.cpp @@ -456,13 +456,11 @@ void SSurface::IntersectAgainst(SSurface *b, SShell *agnstA, SShell *agnstB, } } + Vector dp = nb.Cross(na).WithMagnitude(1.0); + if(!fwd) dp = dp.ScaledBy(-1.0); int i; for(i = 0; i < 20; i++) { - Vector dp = nb.Cross(na); - if(!fwd) dp = dp.ScaledBy(-1); - dp = dp.WithMagnitude(step); - - np = start.Plus(dp); + np = start.Plus(dp.ScaledBy(step)); npc = ClosestPointOnThisAndSurface(b, np); tol = (npc.Minus(np)).Magnitude();