Files
OCCT/tests/bugs/modalg_5/begin
T
Pasukhin Dmitry 3270746444 Foundation Classes - Improve numerical robustness and evaluation efficiency (#1585)
- Stabilize B-spline interpolation and derivative evaluation on uneven knots.
- Add local surface span selection with periodic seam derivative handling.
- Optimize polynomial and rational surface cache first derivatives.
- Consolidate torus evaluators and preserve small components near singularities.
- Fix thin triangle projection and support independent optional BVH outputs.
- Preserve Bezier cusps when adjacent tangents have opposite directions.
- Apply Householder reflectors directly to right-hand sides without forming Q.
- Reuse QR and SVD decompositions and retain small modes under regularization.
- Make Newton convergence and PSO stagnation independent of objective scale.
- Add strict PSO domain handling and optimize particle restart selection.
- Use relative Laguerre residual checks to reject inaccurate roots.
- Add exact component restoration for directions, frames and transformations.
- Fix point mirror inversion and simplify location chain operations.
- Honor default thread pool launch limits in OSD_Parallel.
- Add flat map storage accounting and Precision::IsFinite.
- Default GUID copy assignment and extend GTest regression coverage.
2026-10-06 21:25:43 +01:00

38 lines
1.5 KiB
Plaintext

set subgroup modalg
set calcul "p"
set type "i"
proc OFFSETSHAPE {distance faces calcul type} {
uplevel #0 explode s f
uplevel #0 offsetparameter 1e-7 $calcul $type
uplevel #0 offsetload s $distance $faces
uplevel #0 offsetperform result
}
# Projection roots are geometric results; their last parameter bits depend on
# evaluation rounding, especially where the curve's first derivative vanishes.
# Check root count and evaluated positions at the standard model-space precision.
proc checkProjectionPoints {theCurve theOutput theReferenceParameters} {
upvar 1 $theCurve curve
set matches [regexp -all -inline {parameter [0-9]+ += +([-0-9.+eE]+)} $theOutput]
if {[llength $matches] != 2 * [llength $theReferenceParameters]} {
puts "Error: Incorrect number of projection roots"
return
}
bounds curve projectionFirst projectionLast
set index 0
foreach reference $theReferenceParameters {
set actual [lindex $matches [expr {2 * $index + 1}]]
if {$actual < [dval projectionFirst] || $actual > [dval projectionLast]} {
puts "Error: Projection root is outside the curve domain"
}
cvalue curve $actual projectionX projectionY projectionZ
cvalue curve $reference referenceX referenceY referenceZ
set actualPoint [list [dval projectionX] [dval projectionY] [dval projectionZ]]
set referencePoint [list [dval referenceX] [dval referenceY] [dval referenceZ]]
checkpoint "projection root $index" $actualPoint $referencePoint 1.e-7
incr index
}
}