mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-08 13:01:52 +00:00
fix: match upstream seam comparison and cover wrapped poles
Use SmVector2d tolerance semantics with the same left operand. Native regressions reproduce the former seam jump and cover both sides of the tolerance threshold. Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
@@ -529,7 +529,8 @@ impl Surface {
|
||||
)?;
|
||||
}
|
||||
}
|
||||
if new_uv == uv {
|
||||
// SmVector2d::operator!= scales its tolerance from the left operand.
|
||||
if !new_uv.approx_ne(uv) {
|
||||
reason = OutOfBounds;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,736 @@
|
||||
{
|
||||
"cases": [
|
||||
{
|
||||
"name": "review106_seam_span_1e-06_wrap_False",
|
||||
"inputs": {
|
||||
"wrap": false,
|
||||
"surf": {
|
||||
"bspline": {
|
||||
"srf": {
|
||||
"net": [
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
]
|
||||
],
|
||||
"p": 1,
|
||||
"q": 1,
|
||||
"u": [
|
||||
0,
|
||||
0,
|
||||
2.5e-07,
|
||||
5e-07,
|
||||
7.5e-07,
|
||||
1e-06,
|
||||
1e-06
|
||||
],
|
||||
"v": [
|
||||
999999,
|
||||
999999,
|
||||
1000000,
|
||||
1000000
|
||||
]
|
||||
},
|
||||
"oob": false,
|
||||
"form": 11
|
||||
}
|
||||
},
|
||||
"dom": [
|
||||
0,
|
||||
999999,
|
||||
1e-06,
|
||||
1000000
|
||||
],
|
||||
"solver": 3,
|
||||
"test": [
|
||||
2.0,
|
||||
-1.0,
|
||||
0.5
|
||||
],
|
||||
"tol": 1e-06,
|
||||
"op": "local",
|
||||
"guess": [
|
||||
0,
|
||||
999999.5
|
||||
]
|
||||
},
|
||||
"upstream_ref": "source/SMLib/src/SmSurfacePointSolve.cpp:5882; SmVector2d::operator!="
|
||||
},
|
||||
{
|
||||
"name": "review106_seam_span_1e-06_wrap_True",
|
||||
"inputs": {
|
||||
"wrap": true,
|
||||
"surf": {
|
||||
"bspline": {
|
||||
"srf": {
|
||||
"net": [
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
]
|
||||
],
|
||||
"p": 1,
|
||||
"q": 1,
|
||||
"u": [
|
||||
0,
|
||||
0,
|
||||
2.5e-07,
|
||||
5e-07,
|
||||
7.5e-07,
|
||||
1e-06,
|
||||
1e-06
|
||||
],
|
||||
"v": [
|
||||
999999,
|
||||
999999,
|
||||
1000000,
|
||||
1000000
|
||||
]
|
||||
},
|
||||
"oob": false,
|
||||
"form": 11
|
||||
}
|
||||
},
|
||||
"dom": [
|
||||
0,
|
||||
999999,
|
||||
1e-06,
|
||||
1000000
|
||||
],
|
||||
"solver": 3,
|
||||
"test": [
|
||||
2.0,
|
||||
-1.0,
|
||||
0.5
|
||||
],
|
||||
"tol": 1e-06,
|
||||
"op": "local",
|
||||
"guess": [
|
||||
0,
|
||||
999999.5
|
||||
]
|
||||
},
|
||||
"upstream_ref": "source/SMLib/src/SmSurfacePointSolve.cpp:5882; SmVector2d::operator!="
|
||||
},
|
||||
{
|
||||
"name": "review106_seam_span_1.000002e-06_wrap_False",
|
||||
"inputs": {
|
||||
"wrap": false,
|
||||
"surf": {
|
||||
"bspline": {
|
||||
"srf": {
|
||||
"net": [
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
]
|
||||
],
|
||||
"p": 1,
|
||||
"q": 1,
|
||||
"u": [
|
||||
0,
|
||||
0,
|
||||
2.500005e-07,
|
||||
5.00001e-07,
|
||||
7.500015e-07,
|
||||
1.000002e-06,
|
||||
1.000002e-06
|
||||
],
|
||||
"v": [
|
||||
999999,
|
||||
999999,
|
||||
1000000,
|
||||
1000000
|
||||
]
|
||||
},
|
||||
"oob": false,
|
||||
"form": 11
|
||||
}
|
||||
},
|
||||
"dom": [
|
||||
0,
|
||||
999999,
|
||||
1.000002e-06,
|
||||
1000000
|
||||
],
|
||||
"solver": 3,
|
||||
"test": [
|
||||
2.0,
|
||||
-1.0,
|
||||
0.5
|
||||
],
|
||||
"tol": 1e-06,
|
||||
"op": "local",
|
||||
"guess": [
|
||||
0,
|
||||
999999.5
|
||||
]
|
||||
},
|
||||
"upstream_ref": "source/SMLib/src/SmSurfacePointSolve.cpp:5882; SmVector2d::operator!="
|
||||
},
|
||||
{
|
||||
"name": "review106_seam_span_1.000002e-06_wrap_True",
|
||||
"inputs": {
|
||||
"wrap": true,
|
||||
"surf": {
|
||||
"bspline": {
|
||||
"srf": {
|
||||
"net": [
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
]
|
||||
],
|
||||
"p": 1,
|
||||
"q": 1,
|
||||
"u": [
|
||||
0,
|
||||
0,
|
||||
2.500005e-07,
|
||||
5.00001e-07,
|
||||
7.500015e-07,
|
||||
1.000002e-06,
|
||||
1.000002e-06
|
||||
],
|
||||
"v": [
|
||||
999999,
|
||||
999999,
|
||||
1000000,
|
||||
1000000
|
||||
]
|
||||
},
|
||||
"oob": false,
|
||||
"form": 11
|
||||
}
|
||||
},
|
||||
"dom": [
|
||||
0,
|
||||
999999,
|
||||
1.000002e-06,
|
||||
1000000
|
||||
],
|
||||
"solver": 3,
|
||||
"test": [
|
||||
2.0,
|
||||
-1.0,
|
||||
0.5
|
||||
],
|
||||
"tol": 1e-06,
|
||||
"op": "local",
|
||||
"guess": [
|
||||
0,
|
||||
999999.5
|
||||
]
|
||||
},
|
||||
"upstream_ref": "source/SMLib/src/SmSurfacePointSolve.cpp:5882; SmVector2d::operator!="
|
||||
},
|
||||
{
|
||||
"name": "review106_seam_span_2e-06_wrap_False",
|
||||
"inputs": {
|
||||
"wrap": false,
|
||||
"surf": {
|
||||
"bspline": {
|
||||
"srf": {
|
||||
"net": [
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
]
|
||||
],
|
||||
"p": 1,
|
||||
"q": 1,
|
||||
"u": [
|
||||
0,
|
||||
0,
|
||||
5e-07,
|
||||
1e-06,
|
||||
1.5e-06,
|
||||
2e-06,
|
||||
2e-06
|
||||
],
|
||||
"v": [
|
||||
999999,
|
||||
999999,
|
||||
1000000,
|
||||
1000000
|
||||
]
|
||||
},
|
||||
"oob": false,
|
||||
"form": 11
|
||||
}
|
||||
},
|
||||
"dom": [
|
||||
0,
|
||||
999999,
|
||||
2e-06,
|
||||
1000000
|
||||
],
|
||||
"solver": 3,
|
||||
"test": [
|
||||
2.0,
|
||||
-1.0,
|
||||
0.5
|
||||
],
|
||||
"tol": 1e-06,
|
||||
"op": "local",
|
||||
"guess": [
|
||||
0,
|
||||
999999.5
|
||||
]
|
||||
},
|
||||
"upstream_ref": "source/SMLib/src/SmSurfacePointSolve.cpp:5882; SmVector2d::operator!="
|
||||
},
|
||||
{
|
||||
"name": "review106_seam_span_2e-06_wrap_True",
|
||||
"inputs": {
|
||||
"wrap": true,
|
||||
"surf": {
|
||||
"bspline": {
|
||||
"srf": {
|
||||
"net": [
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.7976931348623157e+308
|
||||
],
|
||||
[
|
||||
1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.7976931348623157e+308
|
||||
]
|
||||
]
|
||||
],
|
||||
"p": 1,
|
||||
"q": 1,
|
||||
"u": [
|
||||
0,
|
||||
0,
|
||||
5e-07,
|
||||
1e-06,
|
||||
1.5e-06,
|
||||
2e-06,
|
||||
2e-06
|
||||
],
|
||||
"v": [
|
||||
999999,
|
||||
999999,
|
||||
1000000,
|
||||
1000000
|
||||
]
|
||||
},
|
||||
"oob": false,
|
||||
"form": 11
|
||||
}
|
||||
},
|
||||
"dom": [
|
||||
0,
|
||||
999999,
|
||||
2e-06,
|
||||
1000000
|
||||
],
|
||||
"solver": 3,
|
||||
"test": [
|
||||
2.0,
|
||||
-1.0,
|
||||
0.5
|
||||
],
|
||||
"tol": 1e-06,
|
||||
"op": "local",
|
||||
"guess": [
|
||||
0,
|
||||
999999.5
|
||||
]
|
||||
},
|
||||
"upstream_ref": "source/SMLib/src/SmSurfacePointSolve.cpp:5882; SmVector2d::operator!="
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user