tracksperanto 1.2.6 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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