mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-10-17 22:38:39 +08:00
- 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.
38 lines
1.5 KiB
Plaintext
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
|
|
}
|
|
}
|