6fd9bdf2 |
1 | puts "========" |
2 | puts "0030645: Modeling Algorithms - B-spline segmentation produces wrong parametrization" |
3 | puts "========" |
4 | puts "" |
5 | |
6 | 2dbsplinecurve result 3 4 \ |
7 | 2.0 4 2.5 2 2.9 2 3.0 4 \ |
8 | 117.9 11.6 1 \ |
9 | 116.7 11 1 \ |
10 | 115.8 10.5 1 \ |
11 | 114.4 9.7 1 \ |
12 | 113.9 9.4 1 \ |
13 | 113.3 9.1 1 \ |
14 | 113.1 9.0 1 \ |
15 | 113.0 8.9 1 |
16 | |
17 | |
18 | set tolerance 1.e-9 |
19 | segment result 2.5 2.900000000001 $tolerance |
20 | |
21 | set crv [dump result] |
22 | |
23 | regexp {Knots +:\n(.*)} $crv full knots |
24 | set is_different_knots 1 |
25 | set knots_list {} |
26 | while { "$knots" != "\n" && $is_different_knots } { |
27 | regexp { +([0-9]+) +: +([-0-9.+eE]+) *([0-9]+)\n(.*)} $knots full index knot weight rest |
28 | puts $knot |
29 | puts $rest |
30 | foreach k $knots_list { |
31 | if { [expr abs($k - $knot)] < $tolerance } { |
32 | set is_different_knots 0 |
33 | } |
34 | } |
35 | |
36 | lappend knots_list $knot |
37 | set knots $rest |
38 | } |
39 | |
40 | if { $is_different_knots } { |
41 | puts "OK: all knots are different" |
42 | } else { |
43 | puts "ERROR: segment has knots too close" |
44 | } |