Skip to content

Commit 3b09009

Browse files
committed
update: fix sweep surface bug.
1 parent a70f2ec commit 3b09009

File tree

3 files changed

+9
-24
lines changed

3 files changed

+9
-24
lines changed

src/LNLib/Geometry/Surface/NurbsSurface.cpp

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -90,23 +90,6 @@ namespace LNLib
9090
}
9191
return ind;
9292
}
93-
94-
XYZ LocalToWorld(const XYZ& localOrigin, const XYZ& localXdir, const XYZ& localYdir, const XYZ& localZdir, const XYZ& worldPoint)
95-
{
96-
double x = localXdir.GetX() * worldPoint.GetX() + localYdir.GetX() * worldPoint.GetY() + localZdir.GetX() * worldPoint.GetZ();
97-
double y = localXdir.GetY() * worldPoint.GetX() + localYdir.GetY() * worldPoint.GetY() + localZdir.GetY() * worldPoint.GetZ();
98-
double z = localXdir.GetZ() * worldPoint.GetX() + localYdir.GetZ() * worldPoint.GetY() + localZdir.GetZ() * worldPoint.GetZ();
99-
return XYZ(x, y, z) + localOrigin;
100-
}
101-
102-
XYZ WorldToLocal(const XYZ& localOrigin, const XYZ& localXdir, const XYZ& localYdir, const XYZ& localZdir, const XYZ& worldPoint)
103-
{
104-
XYZ traslation = (worldPoint - localOrigin);
105-
double x = localXdir.GetX() * traslation.GetX() + localXdir.GetY() * traslation.GetY() + localXdir.GetZ() * traslation.GetZ();
106-
double y = localYdir.GetX() * traslation.GetX() + localYdir.GetY() * traslation.GetY() + localYdir.GetZ() * traslation.GetZ();
107-
double z = localZdir.GetX() * traslation.GetX() + localZdir.GetY() * traslation.GetY() + localZdir.GetZ() * traslation.GetZ();
108-
return XYZ(x, y, z);
109-
}
11093
}
11194

11295
void LNLib::NurbsSurface::Check(const LN_NurbsSurface& surface)
@@ -2406,7 +2389,8 @@ void LNLib::NurbsSurface::CreateSweepSurface(const LN_NurbsCurve& profile, const
24062389
double w = wp.GetW();
24072390
XYZ p = wp.ToXYZ(true);
24082391

2409-
XYZ transformed = WorldToLocal(NurbsCurve::GetPointOnCurve(trajectoryCopy, vk[k]), xdir, ydir, zdir, p);
2392+
Matrix4d transform(xdir, ydir, zdir, NurbsCurve::GetPointOnCurve(trajectoryCopy, vk[k]));
2393+
XYZ transformed = transform.OfPoint(p);
24102394
transformedControlPoints[i] = XYZW(transformed, w);
24112395
}
24122396

@@ -2458,7 +2442,8 @@ void LNLib::NurbsSurface::CreateSweepSurface(const LN_NurbsCurve& profile, const
24582442
double w = wp.GetW();
24592443
XYZ p = wp.ToXYZ(true);
24602444

2461-
XYZ transformed = WorldToLocal(NurbsCurve::GetPointOnCurve(path, segments[k]), xdir, ydir, zdir, p);
2445+
Matrix4d transform(xdir, ydir, zdir, NurbsCurve::GetPointOnCurve(path, segments[k]));
2446+
XYZ transformed = transform.OfPoint(p);
24622447
transformedControlPoints[i] = XYZW(transformed, w);
24632448
}
24642449

src/LNLib/Mathematics/Math/Matrix4d.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ LNLib::Matrix4d::Matrix4d()
2727
}
2828
}
2929

30-
LNLib::Matrix4d::Matrix4d(XYZ basisX, XYZ basisY, XYZ basisZ, XYZ basisW)
30+
LNLib::Matrix4d::Matrix4d(XYZ basisX, XYZ basisY, XYZ basisZ, XYZ origin)
3131
{
3232
m_matrix4d[0][0] = basisX[0];
3333
m_matrix4d[1][0] = basisX[1];
@@ -44,9 +44,9 @@ LNLib::Matrix4d::Matrix4d(XYZ basisX, XYZ basisY, XYZ basisZ, XYZ basisW)
4444
m_matrix4d[2][2] = basisZ[2];
4545
m_matrix4d[3][2] = 0;
4646

47-
m_matrix4d[0][3] = basisW[0];
48-
m_matrix4d[1][3] = basisW[1];
49-
m_matrix4d[2][3] = basisW[2];
47+
m_matrix4d[0][3] = origin[0];
48+
m_matrix4d[1][3] = origin[1];
49+
m_matrix4d[2][3] = origin[2];
5050
m_matrix4d[3][3] = 1;
5151
}
5252

src/LNLib/include/Matrix4d.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace LNLib
2525

2626
Matrix4d();
2727

28-
Matrix4d(XYZ basisX, XYZ basisY, XYZ basisZ, XYZ basisW);
28+
Matrix4d(XYZ basisX, XYZ basisY, XYZ basisZ, XYZ origin);
2929

3030
Matrix4d(double a00, double a01, double a02, double a03,
3131
double a10, double a11, double a12, double a13,

0 commit comments

Comments
 (0)