tracksperanto 1.2.6 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 1.3.0 / 2009-09-23
2
+
3
+ * Implement 3DE import and export
4
+
5
+ === 1.2.7 / 2009-09-22
6
+
7
+ * Improved progress reporting
8
+
1
9
  === 1.2.6 / 2009-09-21
2
10
 
3
11
  * Add const_name to the classes being introspected most often
data/Manifest.txt CHANGED
@@ -6,6 +6,7 @@ Rakefile
6
6
  bin/tracksperanto
7
7
  lib/.DS_Store
8
8
  lib/export/base.rb
9
+ lib/export/equalizer.rb
9
10
  lib/export/match_mover.rb
10
11
  lib/export/mux.rb
11
12
  lib/export/nuke_script.rb
@@ -14,6 +15,7 @@ lib/export/pftrack_5.rb
14
15
  lib/export/shake_text.rb
15
16
  lib/export/syntheyes.rb
16
17
  lib/import/base.rb
18
+ lib/import/equalizer.rb
17
19
  lib/import/flame_stabilizer.rb
18
20
  lib/import/match_mover.rb
19
21
  lib/import/nuke_script.rb
@@ -48,7 +50,9 @@ test/export/samples/ref_PFTrack.2dt
48
50
  test/export/samples/ref_PFTrack5.2dt
49
51
  test/export/samples/ref_ShakeText.txt
50
52
  test/export/samples/ref_Syntheyes.txt
53
+ test/export/samples/ref_equalizer.txt
51
54
  test/export/samples/ref_matchmover.rz2
55
+ test/export/test_equalizer_export.rb
52
56
  test/export/test_match_mover_export.rb
53
57
  test/export/test_mux.rb
54
58
  test/export/test_nuke_export.rb
@@ -59,6 +63,7 @@ test/export/test_syntheyes_export.rb
59
63
  test/helper.rb
60
64
  test/import/.DS_Store
61
65
  test/import/samples/.DS_Store
66
+ test/import/samples/3de_export_cube.txt
62
67
  test/import/samples/flyover2DP_syntheyes.txt
63
68
  test/import/samples/four_tracks_in_one_matchmove.shk
64
69
  test/import/samples/four_tracks_in_one_stabilizer.shk
@@ -77,6 +82,7 @@ test/import/samples/sourcefile_pftrack.2dt
77
82
  test/import/samples/three_tracks_in_one_stabilizer.shk
78
83
  test/import/samples/two_shake_trackers.txt
79
84
  test/import/samples/two_tracks_in_one_tracker.shk
85
+ test/import/test_3de_import.rb
80
86
  test/import/test_flame_import.rb
81
87
  test/import/test_match_mover_import.rb
82
88
  test/import/test_nuke_import.rb
@@ -0,0 +1,41 @@
1
+ # Export for 3DE point files
2
+ class Tracksperanto::Export::Equalizer < Tracksperanto::Export::Base
3
+
4
+ # Should return the suffix and extension of this export file (like "_flame.stabilizer")
5
+ def self.desc_and_extension
6
+ "3de.txt"
7
+ end
8
+
9
+ def self.human_name
10
+ "3DE point export .txt file"
11
+ end
12
+
13
+ def start_export( img_width, img_height)
14
+ # 3DE needs to know the number of points in advance,
15
+ # so we will just buffer to a StringIO
16
+ @internal_io, @num_of_trackers = StringIO.new, 0
17
+ end
18
+
19
+ def start_tracker_segment(tracker_name)
20
+ @internal_io.puts(tracker_name)
21
+ @num_of_trackers += 1
22
+ @tracker_buffer, @num_of_kfs = StringIO.new, 0
23
+ end
24
+
25
+ def export_point(frame, abs_float_x, abs_float_y, float_residual)
26
+ @tracker_buffer.puts("%d %.15f %.15f" % [frame + 1, abs_float_x, abs_float_y])
27
+ @num_of_kfs += 1
28
+ end
29
+
30
+ def end_tracker_segment
31
+ @internal_io.puts("0") # Color of the point, 0 is red
32
+ @internal_io.puts(@num_of_kfs)
33
+ @internal_io.puts(@tracker_buffer.string)
34
+ end
35
+
36
+ def end_export
37
+ @io.puts(@num_of_trackers)
38
+ @io.puts(@internal_io.string)
39
+ end
40
+
41
+ end
@@ -0,0 +1,57 @@
1
+ # Imports 3D Equalizer's text files
2
+ class Tracksperanto::Import::Equalizer < Tracksperanto::Import::Base
3
+
4
+ class IOI < DelegateClass(IO)
5
+ def initialize(io)
6
+ __setobj__(io)
7
+ end
8
+
9
+ def gets_non_empty
10
+ line = __getobj__.gets
11
+ return nil if line.nil?
12
+ s = line.strip
13
+ return gets_non_empty if s.empty?
14
+ s
15
+ end
16
+ end
17
+
18
+ def self.human_name
19
+ "3DE point export file"
20
+ end
21
+
22
+
23
+ def parse(passed_io)
24
+ ts = []
25
+ io = IOI.new(passed_io)
26
+
27
+ num_t = detect_num_of_points(io)
28
+ num_t.times { ts << extract_tracker(io) }
29
+
30
+ ts
31
+ end
32
+
33
+ private
34
+
35
+ def detect_num_of_points(io)
36
+ io.gets_non_empty.to_i
37
+ end
38
+
39
+ KF_PATTERN = /^(\d+)\s([\-\d\.]+)\s([\-\d\.]+)/
40
+ def extract_tracker(io)
41
+ t = Tracksperanto::Tracker.new(:name => io.gets.strip)
42
+
43
+ io.gets # Tracker color, internal 3DE repr and 0 is Red
44
+
45
+ num_of_keyframes = io.gets.to_i
46
+ catch(:__emp) do
47
+ num_of_keyframes.times do
48
+ line = io.gets_non_empty
49
+ throw :__emp unless line
50
+
51
+ frame, x, y = line.scan(KF_PATTERN).flatten
52
+ t.keyframe!(:frame => (frame.to_i - 1), :abs_x => x, :abs_y => y)
53
+ end
54
+ end
55
+ t
56
+ end
57
+ end
@@ -35,8 +35,8 @@ class Tracksperanto::Import::PFTrack < Tracksperanto::Import::Base
35
35
  end
36
36
 
37
37
  num_of_keyframes = first_tracker_line.to_i
38
- t.keyframes = (1..num_of_keyframes).map do
39
- report_progress("Reading keyframe")
38
+ t.keyframes = (1..num_of_keyframes).map do | keyframe_idx |
39
+ report_progress("Reading keyframe #{keyframe_idx} of #{num_of_keyframes}")
40
40
  Tracksperanto::Keyframe.new do |k|
41
41
  k.frame, k.abs_x, k.abs_y, k.residual = io.gets.chomp.split
42
42
  end
data/lib/pipeline/base.rb CHANGED
@@ -107,10 +107,10 @@ class Tracksperanto::Pipeline::Base
107
107
  kf_weight = percent_per_tracker / t.keyframes.length
108
108
  points += 1
109
109
  processor.start_tracker_segment(t.name)
110
- t.each do | kf |
110
+ t.each_with_index do | kf, idx |
111
111
  keyframes += 1
112
112
  processor.export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual)
113
- yield(percent_complete += kf_weight, "Writing keyframe") if block_given?
113
+ yield(percent_complete += kf_weight, "Writing keyframe #{idx+1} of #{t.length}") if block_given?
114
114
  end
115
115
  processor.end_tracker_segment
116
116
  end
data/lib/tracksperanto.rb CHANGED
@@ -4,7 +4,7 @@ require 'delegate'
4
4
 
5
5
  module Tracksperanto
6
6
  PATH = File.expand_path(File.dirname(__FILE__))
7
- VERSION = '1.2.6'
7
+ VERSION = '1.3.0'
8
8
 
9
9
  module Import; end
10
10
  module Export; end
@@ -27,6 +27,12 @@ class Tracksperanto::Tracker < DelegateClass(Array)
27
27
  self[0].frame <=> other_tracker[0].frame
28
28
  end
29
29
 
30
+ # Automatically truncate spaces in the tracker
31
+ # name and replace them with underscores
32
+ def name=(n)
33
+ @name = n.to_s.gsub(/(\s+)/, '_')
34
+ end
35
+
30
36
  # Create and save a keyframe in this tracker
31
37
  def keyframe!(options)
32
38
  push(Tracksperanto::Keyframe.new(options))
@@ -0,0 +1,49 @@
1
+ 2
2
+ Parabolic_1_from_top_left
3
+ 0
4
+ 21
5
+ 1 0.000000000000000 1080.000000000000000
6
+ 2 95.999999999999972 874.800000000000068
7
+ 3 191.999999999999943 691.200000000000159
8
+ 4 288.000000000000057 529.199999999999932
9
+ 5 384.000000000000000 388.800000000000011
10
+ 6 480.000000000000000 270.000000000000000
11
+ 7 576.000000000000000 172.800000000000040
12
+ 8 672.000000000000000 97.200000000000003
13
+ 9 768.000000000000000 43.200000000000010
14
+ 10 864.000000000000000 10.800000000000002
15
+ 11 960.000000000000000 0.000000000000000
16
+ 12 1056.000000000000000 10.800000000000002
17
+ 13 1152.000000000000000 43.200000000000010
18
+ 14 1248.000000000000000 97.200000000000003
19
+ 15 1344.000000000000000 172.800000000000040
20
+ 16 1440.000000000000000 270.000000000000000
21
+ 17 1536.000000000000000 388.800000000000011
22
+ 18 1632.000000000000000 529.199999999999932
23
+ 19 1728.000000000000000 691.200000000000159
24
+ 20 1824.000000000000000 874.800000000000068
25
+ 21 1920.000000000000000 1080.000000000000000
26
+ Parabolic_2_from_bottom_right
27
+ 0
28
+ 21
29
+ 1 1920.000000000000000 0.000000000000000
30
+ 2 1824.000000000000000 205.199999999999932
31
+ 3 1728.000000000000000 388.799999999999841
32
+ 4 1632.000000000000000 550.799999999999955
33
+ 5 1536.000000000000000 691.200000000000045
34
+ 6 1440.000000000000000 810.000000000000000
35
+ 7 1344.000000000000000 907.199999999999932
36
+ 8 1248.000000000000000 982.800000000000068
37
+ 9 1152.000000000000000 1036.799999999999955
38
+ 10 1056.000000000000000 1069.200000000000045
39
+ 11 960.000000000000000 1080.000000000000000
40
+ 12 864.000000000000000 1069.200000000000045
41
+ 13 768.000000000000000 1036.799999999999955
42
+ 14 672.000000000000000 982.800000000000068
43
+ 15 576.000000000000000 907.199999999999932
44
+ 16 480.000000000000000 810.000000000000000
45
+ 17 384.000000000000000 691.200000000000045
46
+ 18 288.000000000000057 550.799999999999955
47
+ 19 191.999999999999943 388.799999999999841
48
+ 20 95.999999999999972 205.199999999999932
49
+ 21 0.000000000000000 0.000000000000000
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../helper'
2
+
3
+ class EqualizerExportTestTest < Test::Unit::TestCase
4
+ include ParabolicTracks
5
+ P = File.dirname(__FILE__) + "/samples/ref_equalizer.txt"
6
+
7
+ def test_export_output_written
8
+ ensure_same_output Tracksperanto::Export::Equalizer, P
9
+ end
10
+
11
+ def test_exporter_meta
12
+ assert_equal "3de.txt", Tracksperanto::Export::Equalizer.desc_and_extension
13
+ assert_equal "3DE point export .txt file", Tracksperanto::Export::Equalizer.human_name
14
+ end
15
+ end
@@ -0,0 +1,726 @@
1
+ 8
2
+ 01
3
+ 0
4
+ 61
5
+ 40 407.384758225105315 232.449011732690479
6
+ 41 407.314424834987449 234.685575165012580
7
+ 42 407.302752937473656 236.921750680667344
8
+ 43 407.246619518712066 239.166060963242074
9
+ 44 407.150011996830017 241.425871566604286
10
+ 45 407.098739426653083 243.620955797649998
11
+ 46 407.031577310973375 245.890841137124738
12
+ 47 406.960552359622966 248.146685267239718
13
+ 48 406.874164787729626 250.400746844618880
14
+ 49 406.792230034464978 252.627522543295555
15
+ 50 406.695252258430742 254.850747321650545
16
+ 51 406.599253155381120 257.125835212270374
17
+ 52 406.538934363704129 259.386096276397552
18
+ 53 406.440552850236259 261.623435401245558
19
+ 54 406.379044202349974 263.901260573346917
20
+ 55 406.246619518712066 266.166060963242103
21
+ 56 406.125154756310167 268.420244518037634
22
+ 57 406.000000000000000 270.640782787892306
23
+ 58 405.845707146533982 272.845707146533982
24
+ 59 405.726548784508680 275.134640374623245
25
+ 60 405.613894645293726 277.386105354706274
26
+ 61 405.500000000000000 279.623282717783297
27
+ 62 405.365844557217201 281.863507701263188
28
+ 63 405.236985982522242 284.142841253222514
29
+ 64 405.056465561373045 286.369092810433017
30
+ 65 404.900483059547241 288.585188071314576
31
+ 66 404.711497371431562 290.804458118549519
32
+ 67 404.590514710679088 293.063604931828536
33
+ 68 404.453826606263817 295.287690475555735
34
+ 69 404.279895988077101 297.500000000000000
35
+ 70 404.148473981636357 299.698915098014140
36
+ 71 403.915002237426108 301.915002237426108
37
+ 72 403.753380481287877 304.166060963242103
38
+ 73 403.573311400892123 306.377410368279868
39
+ 74 403.436424575947115 308.563575424052885
40
+ 75 403.237203030998501 310.762796969001499
41
+ 76 403.030376615392015 312.969623384608042
42
+ 77 402.828504557038002 315.222513861015841
43
+ 78 402.613894645293726 317.386105354706274
44
+ 79 402.436424575947115 319.563575424052885
45
+ 80 402.281831303123340 321.698054794034135
46
+ 81 402.032773127718031 323.887702843947523
47
+ 82 401.774120574287736 326.071391237593275
48
+ 83 401.584851303148014 328.233246804431360
49
+ 84 401.426688599107877 330.377410368279868
50
+ 85 401.179627796237241 332.526611525368480
51
+ 86 400.944617561399923 334.633227260965555
52
+ 87 400.702410426343192 336.766611039765735
53
+ 88 400.500000000000000 338.906733644731275
54
+ 89 400.305319887225323 341.017035450366620
55
+ 90 400.039447640377034 343.146685267239718
56
+ 91 399.761614988043220 345.238385011956780
57
+ 92 399.567673926626640 347.333535781231262
58
+ 93 399.326008921807102 349.405133823276799
59
+ 94 399.055674105562616 351.479456049607904
60
+ 95 398.820372203762759 353.526611525368480
61
+ 96 398.552340369143622 355.571864157633684
62
+ 97 398.328170942631743 357.611713341485427
63
+ 98 398.054890295404448 359.629322230786784
64
+ 99 397.806080494716298 361.668596025275178
65
+ 100 397.527902249710110 363.686239366334348
66
+ 02
67
+ 0
68
+ 80
69
+ 1 617.839919982639344 149.463145565134965
70
+ 2 617.471892924718873 151.445852546149666
71
+ 3 617.128404496920552 153.453270515361197
72
+ 4 616.739601259065694 155.471203774908986
73
+ 5 616.416051309773593 157.453640275546604
74
+ 6 616.071346608981571 159.500000000000000
75
+ 7 615.714492840789376 161.545844759891594
76
+ 8 615.436424575947058 163.563575424052885
77
+ 9 615.054890295404448 165.629322230786784
78
+ 10 614.718503231180762 167.718503231180762
79
+ 11 614.455536763891587 169.819265179151841
80
+ 12 614.127409349406207 171.907493090552379
81
+ 13 613.781982634532142 174.000000000000000
82
+ 14 613.500000000000000 176.093266355268725
83
+ 15 613.208371064187418 178.208371064187361
84
+ 16 612.905276229762535 180.334020280233830
85
+ 17 612.615488041544836 182.446890674982257
86
+ 18 612.333890833201622 184.564646359496322
87
+ 19 612.061032914564748 186.692945027167752
88
+ 20 611.753380481287877 188.833939036757926
89
+ 21 611.500000000000000 191.000000000000000
90
+ 22 611.277937922444835 193.174129982603006
91
+ 23 610.977253775162467 195.340990281269256
92
+ 24 610.716516112994555 197.471104039444185
93
+ 25 610.472753389691661 199.633343259539515
94
+ 26 610.288502628568381 201.804458118549547
95
+ 27 610.000000000000000 204.000000000000000
96
+ 28 609.760712847458763 206.207400002527805
97
+ 29 609.538934363704129 208.386096276397524
98
+ 30 609.333890833201622 210.564646359496322
99
+ 31 609.142849951279118 212.763556207224582
100
+ 32 608.887702843947523 214.967226872281969
101
+ 33 608.665077247570821 217.174093700949925
102
+ 34 608.500000000000000 219.376717282216674
103
+ 35 608.326008921807102 221.594866176723173
104
+ 36 608.142849951279118 223.763556207224582
105
+ 37 607.930388542983451 226.000000000000000
106
+ 38 607.761614988043220 228.238385011956751
107
+ 39 607.572035433473502 230.447465871720937
108
+ 60 605.500000000000000 277.122346120647592
109
+ 61 605.469909942390018 279.315738563224613
110
+ 62 605.445852546149695 281.528107075281071
111
+ 63 605.442522909592185 283.751417646970367
112
+ 64 605.441485035108940 285.934222539466475
113
+ 65 605.453270515361169 288.128404496920552
114
+ 66 605.440552850236259 290.376564598754442
115
+ 67 605.445852546149695 292.528107075281071
116
+ 68 605.469987199384718 294.714237982608097
117
+ 69 605.500000000000000 296.906733644731275
118
+ 70 605.520367390311776 299.094978544616936
119
+ 71 605.557477090407815 301.248582353029633
120
+ 72 605.615241774894685 303.449011732690508
121
+ 73 605.673991078192898 305.594866176723201
122
+ 74 605.718503231180762 307.718503231180762
123
+ 75 605.773859643397145 309.895564766162977
124
+ 76 605.886965216688168 312.079478383726780
125
+ 77 606.000000000000000 314.266542751081658
126
+ 78 606.101604789475346 316.377105497026946
127
+ 79 606.186492902655687 318.500000000000000
128
+ 80 606.328170942631800 320.611713341485427
129
+ 81 606.442522909592185 322.751417646970367
130
+ 82 606.542925101243668 324.839082216151098
131
+ 83 606.659009718730772 326.977253775162524
132
+ 84 606.825354427778962 329.063396883414612
133
+ 85 607.000000000000000 331.200294857267806
134
+ 86 607.166060963242103 333.246619518712123
135
+ 87 607.311960412995177 335.311960412995177
136
+ 88 607.500000000000000 337.376717282216703
137
+ 89 607.666109166798378 339.435353640503649
138
+ 90 607.864509349878176 341.464796991207038
139
+ 91 608.100226054407813 343.521831417791816
140
+ 92 608.287690475555678 345.546173393736183
141
+ 93 608.528107075281014 347.554147453850305
142
+ 94 608.751417646970367 349.557477090407815
143
+ 95 608.962181004998683 351.558783872665060
144
+ 96 609.225267399564245 353.555596442849151
145
+ 97 609.500000000000000 355.541764536505298
146
+ 98 609.737727887700999 357.500000000000000
147
+ 99 610.037818995001317 359.441216127334883
148
+ 100 610.326008921807102 361.405133823276799
149
+ 03
150
+ 0
151
+ 80
152
+ 1 404.500000000000000 362.789904070067678
153
+ 2 404.165068964104876 364.754464925054663
154
+ 3 403.801944539089050 366.710669517724227
155
+ 4 403.435353640503649 368.666109166798378
156
+ 5 403.098739426653083 370.620955797650026
157
+ 6 402.702901234486205 372.598249295763935
158
+ 7 402.352508104796982 374.500000000000000
159
+ 8 402.000000000000000 376.426275196059350
160
+ 9 401.599230676652269 378.294769573616293
161
+ 10 401.245535074945337 380.165068964104876
162
+ 11 400.813866570516780 382.042984915590807
163
+ 12 400.464427514697320 383.861397848549984
164
+ 13 400.061032914564748 385.692945027167752
165
+ 14 399.636449372216475 387.526430712330352
166
+ 15 399.294376070322414 389.318252971722245
167
+ 16 398.872590650593850 391.092506909447650
168
+ 17 398.464796991207038 392.864509349878176
169
+ 18 398.063604931828536 394.590514710679088
170
+ 19 397.625005530418207 396.344397960809090
171
+ 20 397.258306327174807 398.029903726499299
172
+ 21 396.805081383216873 399.699683382217756
173
+ 22 396.377410368279868 401.426688599107877
174
+ 23 395.929564531986557 403.034209543432041
175
+ 24 395.530090057610039 404.684261436775387
176
+ 25 395.078249319332656 406.302752937473656
177
+ 26 394.634155442782799 407.863507701263188
178
+ 27 394.225267399564245 409.444403557150849
179
+ 28 393.741693672825193 410.970096273500701
180
+ 29 393.366656740460485 412.472753389691604
181
+ 30 392.853314732760282 413.960552359622966
182
+ 31 392.436329720824915 415.436329720824972
183
+ 32 391.960552359622966 416.853314732760282
184
+ 33 391.532268037982135 418.285249455762312
185
+ 34 391.054278381773315 419.665396110365123
186
+ 35 390.586507282241996 421.048562042531330
187
+ 36 390.147024217517014 422.392401270979178
188
+ 37 389.688039587004823 423.688039587004823
189
+ 38 389.258306327174807 424.970096273500701
190
+ 39 388.729343015218603 426.235450869255260
191
+ 40 388.287690475555735 427.453826606263817
192
+ 41 387.791203573261271 428.627000264492665
193
+ 42 387.344639214092979 429.762432029797480
194
+ 43 386.821948390203318 430.927225371533609
195
+ 44 386.394632608583265 431.955542011428236
196
+ 45 385.887702843947523 433.032773127718031
197
+ 46 385.408983379505685 434.064844459236269
198
+ 47 384.915002237426165 435.084997762573892
199
+ 48 384.426275196059350 436.000000000000000
200
+ 49 383.967226872281969 436.887702843947523
201
+ 50 383.463266492026207 437.777938128658320
202
+ 51 382.955189798824676 438.605170974447958
203
+ 52 382.500000000000000 439.451960311826838
204
+ 53 382.000000000000000 440.218360428613209
205
+ 54 381.500000000000000 440.901748211048016
206
+ 55 381.047577070735372 441.584032228831290
207
+ 56 380.529793440422395 442.262071929641138
208
+ 57 380.043294292132884 442.816026521843469
209
+ 58 379.552534128279035 443.427964566526441
210
+ 59 379.079478383726780 443.886965216688111
211
+ 80 368.960552359622966 443.146685267239718
212
+ 81 368.500000000000000 442.457601132855473
213
+ 82 368.061880177103944 441.762758616933809
214
+ 83 367.573724803940650 441.000000000000000
215
+ 84 367.171495442961998 440.222513861015841
216
+ 85 366.706629004693070 439.293370995306930
217
+ 86 366.299810591587800 438.344161480903551
218
+ 87 365.825906299050075 437.334922752429179
219
+ 88 365.414116681573148 436.231898031794856
220
+ 89 365.000000000000000 435.103742746044190
221
+ 90 364.546729484638831 433.871595503079504
222
+ 91 364.150011996830017 432.574128433395686
223
+ 92 363.722835040247958 431.277164959752042
224
+ 93 363.360916900359200 429.836040653663531
225
+ 94 362.955189798824676 428.394829025552042
226
+ 95 362.542925101243668 426.839082216151098
227
+ 96 362.207400002527834 425.239287152541237
228
+ 97 361.819265179151841 423.544463236108413
229
+ 98 361.455536763891587 421.819265179151841
230
+ 99 361.108439309547180 420.000000000000000
231
+ 100 360.694097831952149 418.150881119688904
232
+ 04
233
+ 0
234
+ 80
235
+ 1 617.839082216151041 362.542925101243668
236
+ 2 618.055592421421920 364.521140779977316
237
+ 3 618.285762017391903 366.469987199384775
238
+ 4 618.538934363704129 368.386096276397552
239
+ 5 618.713888221728780 370.318923865396471
240
+ 6 619.029903726499242 372.258306327174807
241
+ 7 619.305417298318957 374.079328075886849
242
+ 8 619.523105741776817 375.968435906322725
243
+ 9 619.791628935812582 377.791628935812639
244
+ 10 620.098739426653083 379.620955797650026
245
+ 11 620.432872548035107 381.500000000000000
246
+ 12 620.685575165012551 383.314424834987392
247
+ 13 621.000000000000000 385.103742746044190
248
+ 14 621.337480696893635 386.855652887475003
249
+ 15 621.653651603942080 388.624192507749626
250
+ 16 621.955189798824676 390.394829025552042
251
+ 17 622.334020280233858 392.094723770237465
252
+ 18 622.637163061644287 393.796303285537192
253
+ 19 623.028239969657534 395.500000000000000
254
+ 20 623.425871566604314 397.150011996830017
255
+ 21 623.760712847458763 398.792599997472166
256
+ 22 624.160917783848959 400.457074898756332
257
+ 23 624.559996741353416 402.038037149746970
258
+ 24 624.952422929264685 403.584032228831290
259
+ 25 625.393391521567310 405.147069217113653
260
+ 26 625.762432029797424 406.655360785907021
261
+ 27 626.237203030998444 408.237203030998501
262
+ 28 626.657395354156620 409.700626577632590
263
+ 29 627.072774628466391 411.178051609796682
264
+ 30 627.552534128279035 412.572035433473559
265
+ 31 628.028597271888202 414.028597271888202
266
+ 32 628.500000000000000 415.432530374230225
267
+ 33 628.970096273500758 416.741693672825193
268
+ 34 629.478168582208241 418.100226054407869
269
+ 35 629.952422929264685 419.415967771168710
270
+ 36 630.500000000000000 420.680920750854227
271
+ 37 631.000000000000000 421.929699706437702
272
+ 38 631.537013144260072 423.161177805501154
273
+ 39 632.054890295404448 424.370677769213216
274
+ 40 632.628103417443526 425.500000000000000
275
+ 41 633.208796426738672 426.627000264492665
276
+ 42 633.718168696876660 427.698054794034135
277
+ 43 634.344639214092922 428.762432029797480
278
+ 44 634.895564766163034 429.773859643397202
279
+ 45 635.500000000000000 430.811022013381660
280
+ 46 636.088454020289873 431.754294388083849
281
+ 47 636.707179101835209 432.684376986585164
282
+ 48 637.326008921807102 433.594866176723201
283
+ 49 637.934222539466418 434.441485035108997
284
+ 50 638.587219964587462 435.250835459016400
285
+ 51 639.272256702818140 436.005549966761862
286
+ 52 639.909125979374721 436.727377938124164
287
+ 53 640.563960356160464 437.436039643839536
288
+ 54 641.245705611916151 438.088454020289817
289
+ 55 641.920671924113208 438.694582701681099
290
+ 56 642.599230676652269 439.294769573616293
291
+ 57 643.331403974724822 439.806080494716298
292
+ 58 644.000000000000000 440.342447884033618
293
+ 59 644.698054794034192 440.718168696876660
294
+ 60 645.457074898756332 441.160917783848902
295
+ 61 646.186492902655687 441.500000000000000
296
+ 62 646.895752725021566 441.776802493975083
297
+ 63 647.629322230786784 442.054890295404448
298
+ 64 648.401750704236065 442.297098765513795
299
+ 65 649.180734820848102 442.455536763891587
300
+ 66 649.934222539466418 442.558514964891003
301
+ 67 650.705232268595296 442.619582504179107
302
+ 68 651.500000000000000 442.623282717783297
303
+ 69 652.297098765513852 442.598249295763935
304
+ 70 653.093266355268725 442.500000000000000
305
+ 71 653.916929630780942 442.404557448131300
306
+ 72 654.699683382217700 442.194918616783127
307
+ 73 655.520543950392153 441.944325894437384
308
+ 74 656.346348396057920 441.624192507749626
309
+ 75 657.174441867232304 441.301223372925222
310
+ 76 658.000000000000000 440.803109519330974
311
+ 77 658.852975782482986 440.392401270979178
312
+ 78 659.662141711468735 439.857665137456252
313
+ 79 660.530012800615282 439.285762017391903
314
+ 100 678.741947858262620 412.970380445406988
315
+ 05
316
+ 0
317
+ 100
318
+ 1 352.764549130744740 95.729343015218618
319
+ 2 353.464796991207038 93.864509349878205
320
+ 3 354.186133429483220 92.042984915590807
321
+ 4 354.824362317493012 90.302063364276009
322
+ 5 355.526890023461874 88.552989163880753
323
+ 6 356.237241383066191 86.938119822896070
324
+ 7 356.919210268130087 85.407377428613813
325
+ 8 357.607598729020822 83.852975782483000
326
+ 9 358.326008921807102 82.405133823276813
327
+ 10 359.000000000000000 81.033697484225556
328
+ 11 359.682657560043594 79.705515087988175
329
+ 12 360.376717282216703 78.500000000000000
330
+ 13 361.054278381773315 77.334603889634863
331
+ 14 361.699683382217756 76.194918616783156
332
+ 15 362.420244518037634 75.125154756310195
333
+ 16 363.092506909447593 74.127409349406165
334
+ 17 363.730699912082912 73.233998487743889
335
+ 18 364.440552850236259 72.376564598754442
336
+ 19 365.094978544616936 71.520367390311733
337
+ 20 365.732631593479482 70.765382912858286
338
+ 21 366.417756614270104 70.095196718982379
339
+ 22 367.055674105562616 69.479456049607876
340
+ 23 367.697536266392206 68.921259142496865
341
+ 24 368.386105354706274 68.386105354706260
342
+ 25 369.000000000000000 67.929699706437702
343
+ 26 369.632635459253095 67.527397570625794
344
+ 27 370.300316617782244 67.194918616783156
345
+ 28 370.892782242869430 66.892782242869458
346
+ 29 371.500000000000000 66.680472388656455
347
+ 30 372.135490650121824 66.535203008792976
348
+ 31 372.705230426383707 66.400769323347745
349
+ 32 373.354077020651630 66.354077020651602
350
+ 33 373.945721618226685 66.334603889634863
351
+ 34 374.500000000000000 66.371896582556445
352
+ 35 375.095827211326707 66.439564696096312
353
+ 36 375.673991078192898 66.594866176723187
354
+ 37 376.270656984781397 66.764549130744740
355
+ 38 376.791434014320430 67.036676958111627
356
+ 39 377.352651334289419 67.328744908163074
357
+ 40 377.919210268130087 67.592622571386187
358
+ 41 378.440003258646527 68.038037149746955
359
+ 42 378.962181004998683 68.441216127334911
360
+ 43 379.500000000000000 68.906733644731290
361
+ 44 380.037818995001317 69.441216127334911
362
+ 45 380.515725394878132 70.000000000000000
363
+ 46 381.047577070735372 70.584032228831290
364
+ 47 381.529793440422395 71.262071929641138
365
+ 48 382.032773127718031 71.887702843947523
366
+ 49 382.527397570625794 72.632635459253095
367
+ 50 383.000000000000000 73.426275196059365
368
+ 51 383.464310882685595 74.222094024700965
369
+ 52 383.886965216688168 75.079478383726766
370
+ 53 384.405096997143517 75.943528791688692
371
+ 54 384.777486138984159 76.828504557037988
372
+ 55 385.288502628568438 77.804458118549533
373
+ 56 385.668596025275178 78.806080494716298
374
+ 57 386.133625061075577 79.776648485806021
375
+ 58 386.535203008792962 80.864509349878205
376
+ 59 386.929564531986557 81.965790456567987
377
+ 60 387.379044202349974 83.098739426653069
378
+ 61 387.698054794034135 84.281831303123326
379
+ 62 388.128404496920552 85.453270515361197
380
+ 63 388.500000000000000 86.650957362393868
381
+ 64 388.872590650593850 87.907493090552379
382
+ 65 389.239000469728239 89.205887335061178
383
+ 66 389.567127451964836 90.500000000000000
384
+ 67 389.938306778583808 91.828508185583729
385
+ 68 390.299232522620400 93.233351836456734
386
+ 69 390.563575424052885 94.563575424052900
387
+ 70 390.929564531986557 96.034209543432027
388
+ 71 391.262071929641138 97.470206559577647
389
+ 72 391.558514964891003 98.934222539466475
390
+ 73 391.871595503079448 100.453270515361197
391
+ 74 392.174645572221095 101.936603116585388
392
+ 75 392.451612627216036 103.500000000000000
393
+ 76 392.719246357554653 105.056063807856731
394
+ 77 393.000000000000000 106.640782787892320
395
+ 78 393.301945205965865 108.281831303123312
396
+ 79 393.535203008792962 109.864509349878205
397
+ 80 393.820372203762759 111.526611525368480
398
+ 81 394.029741268850444 113.253359831636089
399
+ 82 394.305417298318957 114.920671924113165
400
+ 83 394.538934363704129 116.613903723602462
401
+ 84 394.745678476086823 118.357185068079303
402
+ 85 394.960552359622966 120.146685267239704
403
+ 86 395.223351514193951 121.866374938924423
404
+ 87 395.418251074798491 123.654255810446159
405
+ 88 395.583948690226407 125.453640275546604
406
+ 89 395.766611039765735 127.297589573656808
407
+ 90 396.000000000000000 129.113756001691115
408
+ 91 396.200294857267806 131.000000000000000
409
+ 92 396.360916900359200 132.836040653663531
410
+ 93 396.529793440422338 134.737928070358862
411
+ 94 396.671255091836883 136.647348665710581
412
+ 95 396.839082216151098 138.542925101243696
413
+ 96 397.000000000000000 140.500000000000000
414
+ 97 397.130321383097339 142.452010031224290
415
+ 98 397.292186456343074 144.378347274249222
416
+ 99 397.418251074798491 146.345744189553841
417
+ 100 397.527246610308396 148.366656740460485
418
+ 06
419
+ 0
420
+ 100
421
+ 1 672.718168696876660 96.301945205965836
422
+ 2 672.160917783848845 94.457074898756318
423
+ 3 671.561944057421783 92.623658205828804
424
+ 4 670.965790456568016 90.929564531986557
425
+ 5 670.344161480903608 89.299810591587814
426
+ 6 669.705041258441952 87.705041258441895
427
+ 7 669.104435233836966 86.226140356602812
428
+ 8 668.471203774908986 84.739601259065637
429
+ 9 667.836040653663531 83.360916900359172
430
+ 10 667.209581728093553 82.035864614121067
431
+ 11 666.535689117314405 80.777905975299035
432
+ 12 665.874845243689833 79.579755481962380
433
+ 13 665.222094024700937 78.464310882685609
434
+ 14 664.538934363704129 77.386096276397524
435
+ 15 663.874164787729683 76.400746844618880
436
+ 16 663.181097432774550 75.452492597581085
437
+ 17 662.500000000000000 74.548469855214833
438
+ 18 661.804458118549519 73.711497371431591
439
+ 19 661.118192343470128 73.000000000000000
440
+ 20 660.451917480938391 72.287181384340386
441
+ 21 659.745678476086823 71.642814931920697
442
+ 22 659.034209543431984 71.070435468013443
443
+ 23 658.376564598754499 70.559447149763741
444
+ 24 657.592622571386187 70.080789731869899
445
+ 25 656.945721618226685 69.665396110365137
446
+ 26 656.237302616076477 69.342717209711978
447
+ 27 655.523105741776817 69.031564093677275
448
+ 28 654.792599997472166 68.760712847458791
449
+ 29 654.080789731869913 68.592622571386201
450
+ 30 653.384694531243781 68.460412118410446
451
+ 31 652.654255810446216 68.418251074798476
452
+ 32 651.955189798824676 68.394829025552042
453
+ 33 651.249605841114089 68.410975570783549
454
+ 34 650.532931030484633 68.467068969515338
455
+ 35 649.799495431719038 68.569067335629171
456
+ 36 649.088454020289873 68.754294388083821
457
+ 37 648.388558692421952 69.000000000000000
458
+ 38 647.681747028277755 69.294376070322414
459
+ 39 646.952422929264685 69.584032228831290
460
+ 40 646.267860417401948 69.993986503933044
461
+ 41 645.550988267309549 70.384758225105315
462
+ 42 644.828504557037945 70.777486138984159
463
+ 43 644.142334862543748 71.337858288531308
464
+ 44 643.453270515361169 71.871595503079476
465
+ 45 642.712309524444322 72.453826606263803
466
+ 46 642.034209543431984 73.070435468013443
467
+ 47 641.357185068079275 73.745678476086837
468
+ 48 640.615241774894685 74.449011732690494
469
+ 49 639.928608762406725 75.225879425712279
470
+ 50 639.276747812316557 76.000000000000000
471
+ 51 638.544463236108413 76.819265179151841
472
+ 52 637.863507701263188 77.634155442782799
473
+ 53 637.223468424846487 78.557282713499262
474
+ 54 636.541764536505298 79.500000000000000
475
+ 55 635.839919982639231 80.463145565134965
476
+ 56 635.179627796237241 81.473388474631520
477
+ 57 634.500000000000000 82.500000000000000
478
+ 58 633.849988003169983 83.574128433395700
479
+ 59 633.193290711369968 84.671044119663719
480
+ 60 632.528957090550193 85.819414856534479
481
+ 61 631.886351289684740 87.000000000000000
482
+ 62 631.239287152541237 88.207400002527805
483
+ 63 630.563575424052942 89.436424575947100
484
+ 64 629.945109704595552 90.629322230786769
485
+ 65 629.334603889634877 91.945721618226713
486
+ 66 628.681076134603472 93.286111778271220
487
+ 67 628.063604931828536 94.590514710679102
488
+ 68 627.440003258646584 95.961962850253030
489
+ 69 626.796303285537192 97.362836938355642
490
+ 70 626.237203030998444 98.762796969001528
491
+ 71 625.586260434119140 100.233749055512178
492
+ 72 625.000000000000000 101.657552115966368
493
+ 73 624.428997996187832 103.199942440510398
494
+ 74 623.806080494716298 104.668596025275178
495
+ 75 623.238385011956780 106.238385011956751
496
+ 76 622.618425175953234 107.768417910832781
497
+ 77 622.054858677496441 109.405430190285927
498
+ 78 621.476800319762333 110.968739413917092
499
+ 79 620.904803281017621 112.582243385729896
500
+ 80 620.356237270892734 114.252556145729002
501
+ 81 619.754294388083849 115.911545979710183
502
+ 82 619.250835459016457 117.587219964587447
503
+ 83 618.681747028277755 119.294376070322414
504
+ 84 618.196890480669026 120.999999999999986
505
+ 85 617.613524840848072 122.749997208405546
506
+ 86 617.093266355268725 124.500000000000000
507
+ 87 616.557477090407815 126.248582353029633
508
+ 88 616.084997762573835 128.084997762573863
509
+ 89 615.537013144260072 129.838822194498817
510
+ 90 615.022746224837533 131.659009718730744
511
+ 91 614.539939593671306 133.500000000000000
512
+ 92 614.028220852283766 135.359898044963671
513
+ 93 613.557282713499262 137.223468424846516
514
+ 94 613.079478383726723 139.113034783311861
515
+ 95 612.573724803940650 141.000000000000000
516
+ 96 612.127409349406207 142.907493090552379
517
+ 97 611.637163061644287 144.796303285537192
518
+ 98 611.195541881450481 146.711497371431591
519
+ 99 610.717852801629874 148.682320330336495
520
+ 100 610.328170942631800 150.611713341485427
521
+ 07
522
+ 0
523
+ 100
524
+ 1 352.766611039765735 416.297589573656808
525
+ 2 352.232306370027175 414.362275034277900
526
+ 3 351.671829057368200 412.388286658514573
527
+ 4 351.193919505283702 410.331403974724822
528
+ 5 350.637724965722100 408.232306370027175
529
+ 6 350.183973478156531 406.043294292132884
530
+ 7 349.655768028353691 403.762084490471977
531
+ 8 349.179627796237185 401.473388474631520
532
+ 9 348.697536266392206 399.078740857503135
533
+ 10 348.254321523913177 396.642814931920668
534
+ 11 347.777486138984159 394.171495442961998
535
+ 12 347.377410368279868 391.573311400892123
536
+ 13 346.929564531986557 388.965790456567959
537
+ 14 346.530012800615225 386.285762017391903
538
+ 15 346.135490650121824 383.535203008792962
539
+ 16 345.706629004693070 380.706629004693070
540
+ 17 345.360916900359200 377.836040653663531
541
+ 18 345.000000000000000 374.891560690452820
542
+ 19 344.592622571386187 371.919210268130087
543
+ 20 344.337858288531322 368.857665137456252
544
+ 21 343.994450033238138 365.727743297181803
545
+ 22 343.654874242428320 362.583227411025121
546
+ 23 343.377410368279868 359.426688599107877
547
+ 24 343.092506909447650 356.127409349406150
548
+ 25 342.791628935812639 352.791628935812639
549
+ 26 342.563575424052885 349.436424575947115
550
+ 27 342.340990281269285 346.022746224837476
551
+ 28 342.095827211326764 342.560435303903660
552
+ 29 341.857300889702572 339.072598056761819
553
+ 30 341.680472388656483 335.500000000000000
554
+ 31 341.500000000000000 331.906733644731275
555
+ 32 341.344161480903608 328.299810591587800
556
+ 33 341.208796426738729 324.627000264492665
557
+ 34 341.079478383726780 320.886965216688168
558
+ 35 340.936603116585388 317.174645572221095
559
+ 36 340.849182736533521 313.390258797645060
560
+ 37 340.753730516826295 309.559072958936781
561
+ 38 340.681747028277755 305.705623929677586
562
+ 39 340.607598729020822 301.852975782482986
563
+ 40 340.584032228831290 297.952422929264628
564
+ 41 340.558783872665117 294.037818995001317
565
+ 42 340.560435303903660 290.095827211326764
566
+ 43 340.546729484638774 286.128404496920552
567
+ 44 340.574128433395686 282.150011996830017
568
+ 45 340.607598729020822 278.147024217517014
569
+ 46 340.665077247570821 274.174093700949925
570
+ 47 340.726548784508680 270.134640374623245
571
+ 48 340.820228422008029 266.074690971171719
572
+ 49 340.915002237426108 262.084997762573892
573
+ 50 341.069535316021927 258.036178160862676
574
+ 51 341.218017365467858 254.000000000000000
575
+ 52 341.370677769213216 249.945109704595552
576
+ 53 341.500000000000000 245.906733644731275
577
+ 54 341.662141711468678 241.857665137456223
578
+ 55 341.845155751512550 237.824437631688710
579
+ 56 342.063396883414612 233.825354427778905
580
+ 57 342.302063364276023 229.824362317493041
581
+ 58 342.536854434865006 225.839919982639287
582
+ 59 342.763014017477701 221.857158746777458
583
+ 60 343.034602599248217 217.886156796823684
584
+ 61 343.340990281269228 213.977253775162495
585
+ 62 343.584032228831290 210.047577070735372
586
+ 63 343.845155751512550 206.175562368311290
587
+ 64 344.197462738361196 202.301558911320825
588
+ 65 344.526890023461874 198.447010836119233
589
+ 66 344.852975782482986 194.607598729020822
590
+ 67 345.222513861015841 190.828504557037974
591
+ 68 345.546729484638774 187.128404496920524
592
+ 69 345.936395068171464 183.409485289320884
593
+ 70 346.315623013414836 179.707179101835180
594
+ 71 346.665979719766142 176.094723770237437
595
+ 72 347.093266355268725 172.500000000000000
596
+ 73 347.500000000000000 168.971760030342494
597
+ 74 347.905021455383064 165.479632609688281
598
+ 75 348.353861830746212 162.000000000000000
599
+ 76 348.749164540983600 158.587219964587433
600
+ 77 349.235450869255260 155.270656984781397
601
+ 78 349.629322230786784 151.945109704595552
602
+ 79 350.098739426653083 148.620955797649998
603
+ 80 350.554147453850305 145.471892924718929
604
+ 81 351.022746224837476 142.340990281269256
605
+ 82 351.500000000000000 139.211457575823573
606
+ 83 352.000000000000000 136.218360428613238
607
+ 84 352.471042909449807 133.180585143465521
608
+ 85 352.994450033238138 130.272256702818197
609
+ 86 353.452491575655131 127.416560834554005
610
+ 87 353.952422929264628 124.584032228831290
611
+ 88 354.463145565134937 121.839919982639287
612
+ 89 354.957015084409193 119.186133429483206
613
+ 90 355.500000000000000 116.548387372783992
614
+ 91 356.000000000000000 114.000000000000000
615
+ 92 356.542398867144527 111.500000000000000
616
+ 93 357.034209543432041 109.070435468013443
617
+ 94 357.546173393736183 106.712309524444265
618
+ 95 358.095196718982379 104.417756614270090
619
+ 96 358.627000264492665 102.208796426738701
620
+ 97 359.196890480669026 99.999999999999986
621
+ 98 359.620955797650026 97.901260573346931
622
+ 99 360.223351514193951 95.866374938924423
623
+ 100 360.694582701681043 93.920671924113165
624
+ 08
625
+ 0
626
+ 100
627
+ 1 672.718503231180762 415.718503231180762
628
+ 2 673.464310882685595 413.777905975299063
629
+ 3 674.207400002527834 411.760712847458819
630
+ 4 674.905276229762535 409.665979719766199
631
+ 5 675.615305468756219 407.539587881589568
632
+ 6 676.352651334289476 405.328744908163060
633
+ 7 677.028597271888202 403.028597271888202
634
+ 8 677.714522049388620 400.681547992611058
635
+ 9 678.453826606263760 398.287690475555735
636
+ 10 679.133625061075577 395.776648485806049
637
+ 11 679.805081383216816 393.300316617782244
638
+ 12 680.472097750289890 390.686239366334348
639
+ 13 681.183973478156531 388.043294292132884
640
+ 14 681.806080494716298 385.331403974724822
641
+ 15 682.468501691409983 382.531498308590017
642
+ 16 683.142334862543748 379.662141711468678
643
+ 17 683.710669517724227 376.801944539089050
644
+ 18 684.420244518037634 373.874845243689833
645
+ 19 685.039447640377034 370.853314732760282
646
+ 20 685.628205061045719 367.790269055697308
647
+ 21 686.237567970202576 364.655360785907021
648
+ 22 686.820372203762759 361.526611525368480
649
+ 23 687.405133823276856 358.326008921807102
650
+ 24 687.965790456568016 355.070435468013443
651
+ 25 688.529793440422395 351.737928070358862
652
+ 26 689.054858677496441 348.405430190285927
653
+ 27 689.586507282241996 344.951437957468670
654
+ 28 690.094978544616993 341.520367390311719
655
+ 29 690.584032228831347 338.047577070735372
656
+ 30 691.093266355268725 334.500000000000000
657
+ 31 691.558514964891060 330.934222539466475
658
+ 32 692.022746224837533 327.340990281269228
659
+ 33 692.473569287669648 323.636449372216475
660
+ 34 692.853314732760282 319.960552359622966
661
+ 35 693.317342439956406 316.294484912011796
662
+ 36 693.684261436775387 312.530090057610039
663
+ 37 694.056063807856731 308.719246357554653
664
+ 38 694.438989084790705 304.933838812727572
665
+ 39 694.763014017477758 301.142841253222514
666
+ 40 695.079652901981945 297.304851617561155
667
+ 41 695.436039643839536 293.436039643839536
668
+ 42 695.684261436775387 289.530090057610039
669
+ 43 695.945141322503559 285.594569809714073
670
+ 44 696.193919505283702 281.668596025275178
671
+ 45 696.410975570783535 277.750394158885854
672
+ 46 696.627000264492722 273.791203573261271
673
+ 47 696.776648485806049 269.866374938924423
674
+ 48 696.967226872281913 265.887702843947523
675
+ 49 697.146685267239718 261.960552359622966
676
+ 50 697.278164428309196 258.000000000000000
677
+ 51 697.394829025552099 254.044810201175295
678
+ 52 697.441485035108940 250.065777460533525
679
+ 53 697.500000000000000 246.122346120647563
680
+ 54 697.544463236108413 242.180734820848159
681
+ 55 697.587219964587462 238.250835459016400
682
+ 56 697.594866176723144 234.326008921807073
683
+ 57 697.552340369143622 230.428135842366316
684
+ 58 697.541764536505298 226.500000000000000
685
+ 59 697.461065636295871 222.613903723602476
686
+ 60 697.386475159151928 218.749997208405546
687
+ 61 697.307054972832248 214.938967085435280
688
+ 62 697.175562368311262 211.154844248487450
689
+ 63 697.000000000000000 207.343541497178137
690
+ 64 696.839082216151041 203.542925101243668
691
+ 65 696.639083099640857 199.836040653663531
692
+ 66 696.453270515361169 196.128404496920524
693
+ 67 696.222094024700937 192.464310882685595
694
+ 68 695.956705707867172 188.816026521843440
695
+ 69 695.655768028353691 185.237915509528023
696
+ 70 695.405133823276856 181.673991078192898
697
+ 71 695.072774628466391 178.178051609796682
698
+ 72 694.762084490471921 174.655768028353691
699
+ 73 694.412780035412538 171.250835459016400
700
+ 74 694.074953022617478 167.857205538480940
701
+ 75 693.632635459253152 164.527397570625794
702
+ 76 693.270656984781454 161.235450869255288
703
+ 77 692.816026521843469 157.956705707867116
704
+ 78 692.413739565880860 154.766250944487808
705
+ 79 691.945109704595552 151.629322230786755
706
+ 80 691.473109976538126 148.552989163880738
707
+ 81 690.971760030342466 145.500000000000000
708
+ 82 690.467068969515367 142.532931030484662
709
+ 83 689.936395068171464 139.590514710679088
710
+ 84 689.378347274249222 136.707813543656926
711
+ 85 688.773859643397145 133.895564766162977
712
+ 86 688.277937922444835 131.174129982603006
713
+ 87 687.633343259539515 128.472753389691604
714
+ 88 687.061693221416249 125.828508185583729
715
+ 89 686.439884056715300 123.248114893193346
716
+ 90 685.804458118549519 120.711497371431591
717
+ 91 685.174441867232304 118.301223372925222
718
+ 92 684.500000000000000 115.901748211048002
719
+ 93 683.819265179151785 113.544463236108427
720
+ 94 683.174813541452295 111.332433615898168
721
+ 95 682.437556934835925 109.099987946117153
722
+ 96 681.727743297181860 106.994450033238138
723
+ 97 681.000000000000000 104.891560690452820
724
+ 98 680.305902168047851 102.849118880311096
725
+ 99 679.520543950392153 100.944325894437370
726
+ 100 678.762758616933752 99.061880177103930
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + '/../helper'
2
+
3
+ class EqualizerImportTest < Test::Unit::TestCase
4
+ DELTA = 0.001
5
+
6
+ def test_introspects_properly
7
+ i = Tracksperanto::Import::Equalizer
8
+ assert_equal "3DE point export file", i.human_name
9
+ assert !i.autodetects_size?
10
+ end
11
+
12
+ def test_parsing_from_importable
13
+ fixture = File.open(File.dirname(__FILE__) + '/samples/3de_export_cube.txt')
14
+
15
+ parser = Tracksperanto::Import::Equalizer.new
16
+ parser.width = 1024
17
+ parser.height = 512
18
+
19
+ trackers = parser.parse(fixture)
20
+ assert_equal 8, trackers.length
21
+
22
+ first_t = trackers[0]
23
+ assert_equal "01", first_t.name
24
+ assert_equal 61, first_t.length
25
+
26
+ first_kf = first_t[0]
27
+ assert_in_delta 407.384758225105315, first_kf.abs_x, DELTA
28
+ assert_in_delta 232.449011732690479, first_kf.abs_y, DELTA
29
+ assert_equal 39, first_kf.frame
30
+ end
31
+ end
@@ -25,7 +25,7 @@ class MatchMoverImportTest < Test::Unit::TestCase
25
25
  assert_equal 5, trackers.length
26
26
 
27
27
  first_t = trackers[0]
28
- assert_equal "Track 01", first_t.name
28
+ assert_equal "Track_01", first_t.name
29
29
  assert_equal 131, first_t.length
30
30
  first_kf = first_t[0]
31
31
 
@@ -9,7 +9,7 @@ class PFTrackImportTest < Test::Unit::TestCase
9
9
  assert !i.autodetects_size?
10
10
  end
11
11
 
12
- def test_parsing_from_importable
12
+ def test_parsing_from_importable_pftrack_4
13
13
  fixture = File.open(File.dirname(__FILE__) + '/samples/sourcefile_pftrack.2dt')
14
14
 
15
15
  parser = Tracksperanto::Import::PFTrack.new
@@ -37,7 +37,7 @@ class PFTrackImportTest < Test::Unit::TestCase
37
37
  assert_equal 467, trackers[-1].keyframes.length
38
38
  end
39
39
 
40
- def test_garage_shot
40
+ def test_garage_shot_from_pftrack_5
41
41
  fixture = File.open(File.dirname(__FILE__) + '/samples/garage.2dt')
42
42
  parser = Tracksperanto::Import::PFTrack.new(:width => 1920, :height => 1080)
43
43
  trackers = parser.parse(fixture)
data/test/test_tracker.rb CHANGED
@@ -38,6 +38,11 @@ class TrackerTest < Test::Unit::TestCase
38
38
  assert_equal '<T "FooTracker" with 0 keyframes>', t.inspect
39
39
  end
40
40
 
41
+ def test_ensure_tracker_forbids_spaces_in_names
42
+ t = Tracksperanto::Tracker.new(:name => "Mary had a \n \t little lamb")
43
+ assert_equal "Mary_had_a_little_lamb", t.name
44
+ end
45
+
41
46
  def test_enumerates_keyframe_values_and_returns_length
42
47
  t = Tracksperanto::Tracker.new(:keyframes => [:a, :b])
43
48
  assert_equal [:a, :b], t.map{|e| e}
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{tracksperanto}
5
- s.version = "1.2.6"
5
+ s.version = "1.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Julik Tarkhanov"]
9
- s.date = %q{2009-09-22}
9
+ s.date = %q{2009-09-24}
10
10
  s.default_executable = %q{tracksperanto}
11
11
  s.description = %q{Tracksperanto is a universal 2D-track translator between many apps.}
12
12
  s.email = ["me@julik.nl"]
13
13
  s.executables = ["tracksperanto"]
14
14
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
15
- s.files = [".DS_Store", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/tracksperanto", "lib/.DS_Store", "lib/export/base.rb", "lib/export/match_mover.rb", "lib/export/mux.rb", "lib/export/nuke_script.rb", "lib/export/pftrack.rb", "lib/export/pftrack_5.rb", "lib/export/shake_text.rb", "lib/export/syntheyes.rb", "lib/import/base.rb", "lib/import/flame_stabilizer.rb", "lib/import/match_mover.rb", "lib/import/nuke_script.rb", "lib/import/pftrack.rb", "lib/import/shake_grammar/catcher.rb", "lib/import/shake_grammar/lexer.rb", "lib/import/shake_script.rb", "lib/import/shake_text.rb", "lib/import/syntheyes.rb", "lib/middleware/base.rb", "lib/middleware/golden.rb", "lib/middleware/reformat.rb", "lib/middleware/scaler.rb", "lib/middleware/shift.rb", "lib/middleware/slipper.rb", "lib/pipeline/base.rb", "lib/tracksperanto.rb", "lib/tracksperanto/block_init.rb", "lib/tracksperanto/casts.rb", "lib/tracksperanto/const_name.rb", "lib/tracksperanto/format_detector.rb", "lib/tracksperanto/keyframe.rb", "lib/tracksperanto/safety.rb", "lib/tracksperanto/tracker.rb", "lib/tracksperanto/zip_tuples.rb", "test/.DS_Store", "test/export/.DS_Store", "test/export/README_EXPORT_TESTS.txt", "test/export/samples/ref_NukeScript.nk", "test/export/samples/ref_NukeScript.nk.autosave", "test/export/samples/ref_PFTrack.2dt", "test/export/samples/ref_PFTrack5.2dt", "test/export/samples/ref_ShakeText.txt", "test/export/samples/ref_Syntheyes.txt", "test/export/samples/ref_matchmover.rz2", "test/export/test_match_mover_export.rb", "test/export/test_mux.rb", "test/export/test_nuke_export.rb", "test/export/test_pftrack5_export.rb", "test/export/test_pftrack_export.rb", "test/export/test_shake_export.rb", "test/export/test_syntheyes_export.rb", "test/helper.rb", "test/import/.DS_Store", "test/import/samples/.DS_Store", "test/import/samples/flyover2DP_syntheyes.txt", "test/import/samples/four_tracks_in_one_matchmove.shk", "test/import/samples/four_tracks_in_one_stabilizer.shk", "test/import/samples/fromCombustion_fromMidClip_wSnap.stabilizer", "test/import/samples/garage.2dt", "test/import/samples/hugeFlameSetup.stabilizer", "test/import/samples/kipPointsMatchmover.rz2", "test/import/samples/megaTrack.action.3dtrack.stabilizer", "test/import/samples/one_shake_tracker.txt", "test/import/samples/one_shake_tracker_from_first.txt", "test/import/samples/one_tracker_with_break.nk", "test/import/samples/one_tracker_with_break_in_grp.nk", "test/import/samples/shake_tracker_nodes.shk", "test/import/samples/shake_tracker_nodes_to_syntheyes.txt", "test/import/samples/sourcefile_pftrack.2dt", "test/import/samples/three_tracks_in_one_stabilizer.shk", "test/import/samples/two_shake_trackers.txt", "test/import/samples/two_tracks_in_one_tracker.shk", "test/import/test_flame_import.rb", "test/import/test_match_mover_import.rb", "test/import/test_nuke_import.rb", "test/import/test_pftrack_import.rb", "test/import/test_shake_catcher.rb", "test/import/test_shake_lexer.rb", "test/import/test_shake_script_import.rb", "test/import/test_shake_text_import.rb", "test/import/test_syntheyes_import.rb", "test/middleware/test_golden_middleware.rb", "test/middleware/test_reformat_middleware.rb", "test/middleware/test_scaler_middleware.rb", "test/middleware/test_shift_middleware.rb", "test/middleware/test_slip_middleware.rb", "test/pipeline/test_pipeline_base.rb", "test/test_const_name.rb", "test/test_format_detector.rb", "test/test_keyframe.rb", "test/test_tracker.rb", "tracksperanto.gemspec"]
15
+ s.files = [".DS_Store", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/tracksperanto", "lib/.DS_Store", "lib/export/base.rb", "lib/export/equalizer.rb", "lib/export/match_mover.rb", "lib/export/mux.rb", "lib/export/nuke_script.rb", "lib/export/pftrack.rb", "lib/export/pftrack_5.rb", "lib/export/shake_text.rb", "lib/export/syntheyes.rb", "lib/import/base.rb", "lib/import/equalizer.rb", "lib/import/flame_stabilizer.rb", "lib/import/match_mover.rb", "lib/import/nuke_script.rb", "lib/import/pftrack.rb", "lib/import/shake_grammar/catcher.rb", "lib/import/shake_grammar/lexer.rb", "lib/import/shake_script.rb", "lib/import/shake_text.rb", "lib/import/syntheyes.rb", "lib/middleware/base.rb", "lib/middleware/golden.rb", "lib/middleware/reformat.rb", "lib/middleware/scaler.rb", "lib/middleware/shift.rb", "lib/middleware/slipper.rb", "lib/pipeline/base.rb", "lib/tracksperanto.rb", "lib/tracksperanto/block_init.rb", "lib/tracksperanto/casts.rb", "lib/tracksperanto/const_name.rb", "lib/tracksperanto/format_detector.rb", "lib/tracksperanto/keyframe.rb", "lib/tracksperanto/safety.rb", "lib/tracksperanto/tracker.rb", "lib/tracksperanto/zip_tuples.rb", "test/.DS_Store", "test/export/.DS_Store", "test/export/README_EXPORT_TESTS.txt", "test/export/samples/ref_NukeScript.nk", "test/export/samples/ref_NukeScript.nk.autosave", "test/export/samples/ref_PFTrack.2dt", "test/export/samples/ref_PFTrack5.2dt", "test/export/samples/ref_ShakeText.txt", "test/export/samples/ref_Syntheyes.txt", "test/export/samples/ref_equalizer.txt", "test/export/samples/ref_matchmover.rz2", "test/export/test_equalizer_export.rb", "test/export/test_match_mover_export.rb", "test/export/test_mux.rb", "test/export/test_nuke_export.rb", "test/export/test_pftrack5_export.rb", "test/export/test_pftrack_export.rb", "test/export/test_shake_export.rb", "test/export/test_syntheyes_export.rb", "test/helper.rb", "test/import/.DS_Store", "test/import/samples/.DS_Store", "test/import/samples/3de_export_cube.txt", "test/import/samples/flyover2DP_syntheyes.txt", "test/import/samples/four_tracks_in_one_matchmove.shk", "test/import/samples/four_tracks_in_one_stabilizer.shk", "test/import/samples/fromCombustion_fromMidClip_wSnap.stabilizer", "test/import/samples/garage.2dt", "test/import/samples/hugeFlameSetup.stabilizer", "test/import/samples/kipPointsMatchmover.rz2", "test/import/samples/megaTrack.action.3dtrack.stabilizer", "test/import/samples/one_shake_tracker.txt", "test/import/samples/one_shake_tracker_from_first.txt", "test/import/samples/one_tracker_with_break.nk", "test/import/samples/one_tracker_with_break_in_grp.nk", "test/import/samples/shake_tracker_nodes.shk", "test/import/samples/shake_tracker_nodes_to_syntheyes.txt", "test/import/samples/sourcefile_pftrack.2dt", "test/import/samples/three_tracks_in_one_stabilizer.shk", "test/import/samples/two_shake_trackers.txt", "test/import/samples/two_tracks_in_one_tracker.shk", "test/import/test_3de_import.rb", "test/import/test_flame_import.rb", "test/import/test_match_mover_import.rb", "test/import/test_nuke_import.rb", "test/import/test_pftrack_import.rb", "test/import/test_shake_catcher.rb", "test/import/test_shake_lexer.rb", "test/import/test_shake_script_import.rb", "test/import/test_shake_text_import.rb", "test/import/test_syntheyes_import.rb", "test/middleware/test_golden_middleware.rb", "test/middleware/test_reformat_middleware.rb", "test/middleware/test_scaler_middleware.rb", "test/middleware/test_shift_middleware.rb", "test/middleware/test_slip_middleware.rb", "test/pipeline/test_pipeline_base.rb", "test/test_const_name.rb", "test/test_format_detector.rb", "test/test_keyframe.rb", "test/test_tracker.rb", "tracksperanto.gemspec"]
16
16
  s.has_rdoc = true
17
17
  s.homepage = %q{http://guerilla-di.org/tracksperanto}
18
18
  s.rdoc_options = ["--main", "README.txt"]
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.rubyforge_project = %q{guerilla-di}
21
21
  s.rubygems_version = %q{1.3.1}
22
22
  s.summary = %q{Tracksperanto is a universal 2D-track translator between many apps.}
23
- s.test_files = ["test/export/test_match_mover_export.rb", "test/export/test_mux.rb", "test/export/test_nuke_export.rb", "test/export/test_pftrack5_export.rb", "test/export/test_pftrack_export.rb", "test/export/test_shake_export.rb", "test/export/test_syntheyes_export.rb", "test/import/test_flame_import.rb", "test/import/test_match_mover_import.rb", "test/import/test_nuke_import.rb", "test/import/test_pftrack_import.rb", "test/import/test_shake_catcher.rb", "test/import/test_shake_lexer.rb", "test/import/test_shake_script_import.rb", "test/import/test_shake_text_import.rb", "test/import/test_syntheyes_import.rb", "test/middleware/test_golden_middleware.rb", "test/middleware/test_reformat_middleware.rb", "test/middleware/test_scaler_middleware.rb", "test/middleware/test_shift_middleware.rb", "test/middleware/test_slip_middleware.rb", "test/pipeline/test_pipeline_base.rb", "test/test_const_name.rb", "test/test_format_detector.rb", "test/test_keyframe.rb", "test/test_tracker.rb"]
23
+ s.test_files = ["test/export/test_equalizer_export.rb", "test/export/test_match_mover_export.rb", "test/export/test_mux.rb", "test/export/test_nuke_export.rb", "test/export/test_pftrack5_export.rb", "test/export/test_pftrack_export.rb", "test/export/test_shake_export.rb", "test/export/test_syntheyes_export.rb", "test/import/test_3de_import.rb", "test/import/test_flame_import.rb", "test/import/test_match_mover_import.rb", "test/import/test_nuke_import.rb", "test/import/test_pftrack_import.rb", "test/import/test_shake_catcher.rb", "test/import/test_shake_lexer.rb", "test/import/test_shake_script_import.rb", "test/import/test_shake_text_import.rb", "test/import/test_syntheyes_import.rb", "test/middleware/test_golden_middleware.rb", "test/middleware/test_reformat_middleware.rb", "test/middleware/test_scaler_middleware.rb", "test/middleware/test_shift_middleware.rb", "test/middleware/test_slip_middleware.rb", "test/pipeline/test_pipeline_base.rb", "test/test_const_name.rb", "test/test_format_detector.rb", "test/test_keyframe.rb", "test/test_tracker.rb"]
24
24
 
25
25
  if s.respond_to? :specification_version then
26
26
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracksperanto
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-22 00:00:00 +02:00
12
+ date: 2009-09-24 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,6 +52,7 @@ files:
52
52
  - bin/tracksperanto
53
53
  - lib/.DS_Store
54
54
  - lib/export/base.rb
55
+ - lib/export/equalizer.rb
55
56
  - lib/export/match_mover.rb
56
57
  - lib/export/mux.rb
57
58
  - lib/export/nuke_script.rb
@@ -60,6 +61,7 @@ files:
60
61
  - lib/export/shake_text.rb
61
62
  - lib/export/syntheyes.rb
62
63
  - lib/import/base.rb
64
+ - lib/import/equalizer.rb
63
65
  - lib/import/flame_stabilizer.rb
64
66
  - lib/import/match_mover.rb
65
67
  - lib/import/nuke_script.rb
@@ -94,7 +96,9 @@ files:
94
96
  - test/export/samples/ref_PFTrack5.2dt
95
97
  - test/export/samples/ref_ShakeText.txt
96
98
  - test/export/samples/ref_Syntheyes.txt
99
+ - test/export/samples/ref_equalizer.txt
97
100
  - test/export/samples/ref_matchmover.rz2
101
+ - test/export/test_equalizer_export.rb
98
102
  - test/export/test_match_mover_export.rb
99
103
  - test/export/test_mux.rb
100
104
  - test/export/test_nuke_export.rb
@@ -105,6 +109,7 @@ files:
105
109
  - test/helper.rb
106
110
  - test/import/.DS_Store
107
111
  - test/import/samples/.DS_Store
112
+ - test/import/samples/3de_export_cube.txt
108
113
  - test/import/samples/flyover2DP_syntheyes.txt
109
114
  - test/import/samples/four_tracks_in_one_matchmove.shk
110
115
  - test/import/samples/four_tracks_in_one_stabilizer.shk
@@ -123,6 +128,7 @@ files:
123
128
  - test/import/samples/three_tracks_in_one_stabilizer.shk
124
129
  - test/import/samples/two_shake_trackers.txt
125
130
  - test/import/samples/two_tracks_in_one_tracker.shk
131
+ - test/import/test_3de_import.rb
126
132
  - test/import/test_flame_import.rb
127
133
  - test/import/test_match_mover_import.rb
128
134
  - test/import/test_nuke_import.rb
@@ -171,6 +177,7 @@ signing_key:
171
177
  specification_version: 2
172
178
  summary: Tracksperanto is a universal 2D-track translator between many apps.
173
179
  test_files:
180
+ - test/export/test_equalizer_export.rb
174
181
  - test/export/test_match_mover_export.rb
175
182
  - test/export/test_mux.rb
176
183
  - test/export/test_nuke_export.rb
@@ -178,6 +185,7 @@ test_files:
178
185
  - test/export/test_pftrack_export.rb
179
186
  - test/export/test_shake_export.rb
180
187
  - test/export/test_syntheyes_export.rb
188
+ - test/import/test_3de_import.rb
181
189
  - test/import/test_flame_import.rb
182
190
  - test/import/test_match_mover_import.rb
183
191
  - test/import/test_nuke_import.rb