pspline 5.0.4 → 5.0.5

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -5
  3. data/README.md +1 -0
  4. data/Rakefile +6 -6
  5. data/bin/console +14 -14
  6. data/bin/setup +8 -8
  7. data/ext/pspline/example/exbspline.rb +57 -36
  8. data/ext/pspline/example/excspline.rb +57 -36
  9. data/ext/pspline/example/exdspline.rb +55 -33
  10. data/ext/pspline/example/exfspline.rb +44 -44
  11. data/ext/pspline/example/exfspline1.rb +40 -40
  12. data/ext/pspline/example/exfspline2.rb +68 -0
  13. data/ext/pspline/example/exfspline3.rb +64 -0
  14. data/ext/pspline/example/exmspline.rb +68 -0
  15. data/ext/pspline/example/expspline.rb +29 -29
  16. data/ext/pspline/example/expspline1.rb +29 -29
  17. data/ext/pspline/example/expspline2.rb +47 -47
  18. data/ext/pspline/example/exqspline.rb +31 -31
  19. data/ext/pspline/example/exqspline2.rb +50 -50
  20. data/ext/pspline/example/exqspline3.rb +51 -51
  21. data/ext/pspline/example/exqspline4.rb +35 -0
  22. data/ext/pspline/example/exrspline.rb +34 -34
  23. data/ext/pspline/example/exrspline1.rb +34 -34
  24. data/ext/pspline/example/exrspline2.rb +44 -44
  25. data/ext/pspline/example/exsspline.rb +35 -35
  26. data/ext/pspline/example/exsspline1.rb +35 -35
  27. data/ext/pspline/example/extspline.rb +54 -32
  28. data/ext/pspline/include/basis/pspline.h +156 -20
  29. data/ext/pspline/include/bspline_Config.h +2 -2
  30. data/ext/pspline/plotsub.cpp +15 -8
  31. data/ext/pspline/pspline.cpp +160 -66
  32. data/lib/pspline.rb +71 -63
  33. data/lib/pspline/version.rb +3 -3
  34. data/pspline.gemspec +25 -25
  35. metadata +7 -13
  36. data/ext/pspline/example/example.rb +0 -34
  37. data/ext/pspline/example/exbspline.ps +0 -2194
  38. data/ext/pspline/example/excspline.ps +0 -2985
  39. data/ext/pspline/example/exdspline.ps +0 -2846
  40. data/ext/pspline/example/expspline.ps +0 -3299
  41. data/ext/pspline/example/exqspline.ps +0 -2957
  42. data/ext/pspline/example/exrspline.ps +0 -2812
  43. data/ext/pspline/example/exsspline.ps +0 -1965
  44. data/ext/pspline/example/extspline.ps +0 -2767
@@ -1,31 +1,31 @@
1
- #! /usr/local/bin/ruby
2
- require 'pspline'
3
- include PSPLINE
4
-
5
- puts "# parametric period interpolation (Closed curve interpolation)"
6
-
7
- X = [0, 1, 2, 3, 4, 5, 6, 7, 8]
8
-
9
- Y = [ [ 1.0, 0.0],[ 0.707107, 0.707107],[ 0.0, 1.0],[-0.707107, 0.707107],
10
- [-1.0, 0.0],[-0.707107,-0.707107],[ 0.0,-1.0],[ 0.707107,-0.707107] ]
11
-
12
- Jbn = ARGV[0].to_i
13
-
14
- Dp = 8
15
-
16
- Qs = Pspline.new(Y, [X], [8], [5], [1])
17
-
18
- Y.each do |p|
19
- printf "% f, % f\n", p[0], p[1]
20
- end
21
- printf "# value of interpolation points, Dp = %d", Dp
22
- if Jbn == 0
23
- print "\n"
24
- else
25
- printf ", Jbn = %d\n", Jbn
26
- end
27
- vv = [X]
28
- s = Qs.plot(vv, Dp, [Jbn]) do |a, b|
29
- printf "% .3f % f % f\n", a[0], b[0], b[1]
30
- end
31
- #STDERR.puts s
1
+ #! /usr/local/bin/ruby
2
+ require 'pspline'
3
+ include PSPLINE
4
+
5
+ puts "# parametric period interpolation (Closed curve interpolation)"
6
+
7
+ X = [0, 1, 2, 3, 4, 5, 6, 7, 8]
8
+
9
+ Y = [ [ 1.0, 0.0],[ 0.707107, 0.707107],[ 0.0, 1.0],[-0.707107, 0.707107],
10
+ [-1.0, 0.0],[-0.707107,-0.707107],[ 0.0,-1.0],[ 0.707107,-0.707107] ]
11
+
12
+ Jbn = ARGV[0].to_i
13
+
14
+ Dp = 8
15
+
16
+ Qs = Pspline.new(Y, [X], [8], [5], [1])
17
+
18
+ Y.each do |p|
19
+ printf "% f, % f\n", p[0], p[1]
20
+ end
21
+ printf "# value of interpolation points, Dp = %d", Dp
22
+ if Jbn == 0
23
+ print "\n"
24
+ else
25
+ printf ", Jbn = %d\n", Jbn
26
+ end
27
+ vv = [X]
28
+ s = Qs.plot(vv, Dp, [Jbn]) do |a, b|
29
+ printf "% .3f % f % f\n", a[0], b[0], b[1]
30
+ end
31
+ #STDERR.puts s
@@ -1,50 +1,50 @@
1
- #! /usr/local/bin/ruby
2
- require 'pspline'
3
- include PSPLINE
4
-
5
- # Parametric period interpolation
6
-
7
- nst = [8, 3]
8
- jst = [5, 2]
9
- sst = [1, 0]
10
-
11
- puts "# 2 variable parametric period interpolation (Closed surface interpolation)"
12
-
13
- S = [0, 1, 2, 3, 4, 5, 6, 7, 8]
14
- T = [0, 1, 2]
15
-
16
- XYZ = [ [[ 1.000000, 0.000000, 0.0],[ 1.000000, 0.000000, 1.0],[ 1.000000, 0.000000, 2.0]],
17
- [[ 0.707107, 0.707107, 0.0],[ 0.707107, 0.707107, 1.0],[ 0.707107, 0.707107, 2.0]],
18
- [[ 0.000000, 1.000000, 0.0],[ 0.000000, 1.000000, 1.0],[ 0.000000, 1.000000, 2.0]],
19
- [[-0.707107, 0.707107, 0.0],[-0.707107, 0.707107, 1.0],[-0.707107, 0.707107, 2.0]],
20
- [[-1.000000, 0.000000, 0.0],[-1.000000, 0.000000, 1.0],[-1.000000, 0.000000, 2.0]],
21
- [[-0.707107,-0.707107, 0.0],[-0.707107,-0.707107, 1.0],[-0.707107,-0.707107, 2.0]],
22
- [[ 0.000000,-1.000000, 0.0],[ 0.000000,-1.000000, 1.0],[ 0.000000,-1.000000, 2.0]],
23
- [[ 0.707107,-0.707107, 0.0],[ 0.707107,-0.707107, 1.0],[ 0.707107,-0.707107, 2.0]] ]
24
-
25
- Jbn = ARGV[0].to_i
26
-
27
- Dp = 8
28
-
29
- Qs = Pspline.new(XYZ, [S, T], nst, jst, sst)
30
-
31
- for i in 0...8
32
- for j in 0..2
33
- printf("<%d,%d>", S[i], T[j])
34
- u = XYZ[i][j]
35
- printf(" % f % f % f\n", u[0], u[1], u[2])
36
- end
37
- end
38
- printf "# value of interpolation points, Dp = %d", Dp
39
- if Jbn == 0
40
- print "\n"
41
- else
42
- printf ", Jbn = %d\n", Jbn
43
- end
44
- vv = [S, T]
45
- N = Qs.plot(vv, Dp, [Jbn,0]) do |a, b|
46
- if (a[1] == 0.125)
47
- printf("%.3f %.3f % f % f % f\n", a[0], a[1], b[0], b[1], b[2])
48
- end
49
- end
50
- #STDERR.puts N
1
+ #! /usr/local/bin/ruby
2
+ require 'pspline'
3
+ include PSPLINE
4
+
5
+ # Parametric period interpolation
6
+
7
+ nst = [8, 3]
8
+ jst = [5, 2]
9
+ sst = [1, 0]
10
+
11
+ puts "# 2 variable parametric period interpolation (Closed surface interpolation)"
12
+
13
+ S = [0, 1, 2, 3, 4, 5, 6, 7, 8]
14
+ T = [0, 1, 2]
15
+
16
+ XYZ = [ [[ 1.000000, 0.000000, 0.0],[ 1.000000, 0.000000, 1.0],[ 1.000000, 0.000000, 2.0]],
17
+ [[ 0.707107, 0.707107, 0.0],[ 0.707107, 0.707107, 1.0],[ 0.707107, 0.707107, 2.0]],
18
+ [[ 0.000000, 1.000000, 0.0],[ 0.000000, 1.000000, 1.0],[ 0.000000, 1.000000, 2.0]],
19
+ [[-0.707107, 0.707107, 0.0],[-0.707107, 0.707107, 1.0],[-0.707107, 0.707107, 2.0]],
20
+ [[-1.000000, 0.000000, 0.0],[-1.000000, 0.000000, 1.0],[-1.000000, 0.000000, 2.0]],
21
+ [[-0.707107,-0.707107, 0.0],[-0.707107,-0.707107, 1.0],[-0.707107,-0.707107, 2.0]],
22
+ [[ 0.000000,-1.000000, 0.0],[ 0.000000,-1.000000, 1.0],[ 0.000000,-1.000000, 2.0]],
23
+ [[ 0.707107,-0.707107, 0.0],[ 0.707107,-0.707107, 1.0],[ 0.707107,-0.707107, 2.0]] ]
24
+
25
+ Jbn = ARGV[0].to_i
26
+
27
+ Dp = 8
28
+
29
+ Qs = Pspline.new(XYZ, [S, T], nst, jst, sst)
30
+
31
+ for i in 0...8
32
+ for j in 0..2
33
+ printf("<%d,%d>", S[i], T[j])
34
+ u = XYZ[i][j]
35
+ printf(" % f % f % f\n", u[0], u[1], u[2])
36
+ end
37
+ end
38
+ printf "# value of interpolation points, Dp = %d", Dp
39
+ if Jbn == 0
40
+ print "\n"
41
+ else
42
+ printf ", Jbn = %d\n", Jbn
43
+ end
44
+ vv = [S, T]
45
+ N = Qs.plot(vv, Dp, [Jbn,0]) do |a, b|
46
+ if (a[1] == 0.125)
47
+ printf("%.3f %.3f % f % f % f\n", a[0], a[1], b[0], b[1], b[2])
48
+ end
49
+ end
50
+ #STDERR.puts N
@@ -1,51 +1,51 @@
1
- #! /usr/local/bin/ruby
2
- require 'pspline'
3
- include PSPLINE
4
-
5
- puts "# Parametric period interpolation"
6
-
7
- nst = [3, 8]
8
- jst = [2, 5]
9
- sst = [0, 1]
10
-
11
- puts "# 2 variable parametric period interpolation (Closed surface interpolation)"
12
-
13
- S = [0, 1, 2]
14
- T = [0, 1, 2, 3, 4, 5, 6, 7, 8]
15
-
16
- XYZ = [ [[ 1.000000, 0.000000, 0.0],[ 0.707107, 0.707107, 0.0],[ 0.000000, 1.000000, 0.0],
17
- [-0.707107, 0.707107, 0.0],[-1.000000, 0.000000, 0.0],[-0.707107,-0.707107, 0.0],
18
- [ 0.000000,-1.000000, 0.0],[ 0.707107,-0.707107, 0.0]],
19
- [[ 1.000000, 0.000000, 1.0],[ 0.707107, 0.707107, 1.0],[ 0.000000, 1.000000, 1.0],
20
- [-0.707107, 0.707107, 1.0],[-1.000000, 0.000000, 1.0],[-0.707107,-0.707107, 1.0],
21
- [ 0.000000,-1.000000, 1.0],[ 0.707107,-0.707107, 1.0]],
22
- [[ 1.000000, 0.000000, 2.0],[ 0.707107, 0.707107, 2.0],[ 0.000000, 1.000000, 2.0],
23
- [-0.707107, 0.707107, 2.0],[-1.000000, 0.000000, 2.0],[-0.707107,-0.707107, 2.0],
24
- [ 0.000000,-1.000000, 2.0],[ 0.707107,-0.707107, 2.0]] ]
25
-
26
- Dp = 8
27
-
28
- Jbn = ARGV[0].to_i
29
-
30
- Qs = Pspline.new(XYZ, [S, T], nst, jst, sst)
31
-
32
- for i in 0..2
33
- for j in 0...8
34
- printf("<%d,%d>", S[i], T[j])
35
- u = XYZ[i][j]
36
- printf(" % f % f % f\n", u[0], u[1], u[2])
37
- end
38
- end
39
- printf "# value of interpolation points, Dp = %d", Dp
40
- if Jbn == 0
41
- print "\n"
42
- else
43
- printf ", Jbn = %d\n", Jbn
44
- end
45
- vv = [S, T]
46
- N = Qs.plot(vv, Dp, [0,Jbn]) do |a, b|
47
- if (a[0] == 0.125)
48
- printf("% .3f % .3f % f % f % f\n", a[0], a[1], b[0], b[1], b[2])
49
- end
50
- end
51
- #STDERR.puts N
1
+ #! /usr/local/bin/ruby
2
+ require 'pspline'
3
+ include PSPLINE
4
+
5
+ puts "# Parametric period interpolation"
6
+
7
+ nst = [3, 8]
8
+ jst = [2, 5]
9
+ sst = [0, 1]
10
+
11
+ puts "# 2 variable parametric period interpolation (Closed surface interpolation)"
12
+
13
+ S = [0, 1, 2]
14
+ T = [0, 1, 2, 3, 4, 5, 6, 7, 8]
15
+
16
+ XYZ = [ [[ 1.000000, 0.000000, 0.0],[ 0.707107, 0.707107, 0.0],[ 0.000000, 1.000000, 0.0],
17
+ [-0.707107, 0.707107, 0.0],[-1.000000, 0.000000, 0.0],[-0.707107,-0.707107, 0.0],
18
+ [ 0.000000,-1.000000, 0.0],[ 0.707107,-0.707107, 0.0]],
19
+ [[ 1.000000, 0.000000, 1.0],[ 0.707107, 0.707107, 1.0],[ 0.000000, 1.000000, 1.0],
20
+ [-0.707107, 0.707107, 1.0],[-1.000000, 0.000000, 1.0],[-0.707107,-0.707107, 1.0],
21
+ [ 0.000000,-1.000000, 1.0],[ 0.707107,-0.707107, 1.0]],
22
+ [[ 1.000000, 0.000000, 2.0],[ 0.707107, 0.707107, 2.0],[ 0.000000, 1.000000, 2.0],
23
+ [-0.707107, 0.707107, 2.0],[-1.000000, 0.000000, 2.0],[-0.707107,-0.707107, 2.0],
24
+ [ 0.000000,-1.000000, 2.0],[ 0.707107,-0.707107, 2.0]] ]
25
+
26
+ Dp = 8
27
+
28
+ Jbn = ARGV[0].to_i
29
+
30
+ Qs = Pspline.new(XYZ, [S, T], nst, jst, sst)
31
+
32
+ for i in 0..2
33
+ for j in 0...8
34
+ printf("<%d,%d>", S[i], T[j])
35
+ u = XYZ[i][j]
36
+ printf(" % f % f % f\n", u[0], u[1], u[2])
37
+ end
38
+ end
39
+ printf "# value of interpolation points, Dp = %d", Dp
40
+ if Jbn == 0
41
+ print "\n"
42
+ else
43
+ printf ", Jbn = %d\n", Jbn
44
+ end
45
+ vv = [S, T]
46
+ N = Qs.plot(vv, Dp, [0,Jbn]) do |a, b|
47
+ if (a[0] == 0.125)
48
+ printf("% .3f % .3f % f % f % f\n", a[0], a[1], b[0], b[1], b[2])
49
+ end
50
+ end
51
+ #STDERR.puts N
@@ -0,0 +1,35 @@
1
+ #! /usr/local/bin/ruby
2
+ require 'pspline'
3
+ include PSPLINE
4
+
5
+ puts "# Parametric period interpolation (Closed curve)"
6
+
7
+ XY = [ [ 0, 1.0, 0.0],[ 1, 0.923880, 0.382683],[ 2, 0.707107, 0.707107],[ 3, 0.382683, 0.923880],
8
+ [ 4, 0.0, 1.0],[ 5,-0.382683, 0.923880],[ 6,-0.707107, 0.707107],[ 7,-0.923880, 0.382683],
9
+ [ 8,-1.0, 0.0],[ 9,-0.923880,-0.382683],[10,-0.707107,-0.707107],[11,-0.382683,-0.923880],
10
+ [12, 0.0,-1.0],[13, 0.382683,-0.923880],[14, 0.707107,-0.707107],[15, 0.923880,-0.382683],
11
+ [16, 1.0, 0.0] ]
12
+
13
+ Jbn = ARGV[0].to_i
14
+
15
+ Dp = 8
16
+
17
+ Qs = Bspline.new(XY, 16, 9, 1)
18
+
19
+ vv = []
20
+ XY.each do |p|
21
+ printf "% f, % f\n", p[1], p[2]
22
+ vv.push p[0]
23
+ end
24
+
25
+ Sint = Qs.line_integral(lambda{|x,y|Math.sqrt(x*x+y*y)*0.5}, vv)
26
+ printf "# value of interpolation points, Dp = %d", Dp
27
+ if Jbn == 0
28
+ print "\n"
29
+ else
30
+ printf ", Jbn = %d\n", Jbn
31
+ end
32
+ s = Qs.plot(vv, Dp, Jbn) do |a, b|
33
+ printf "%6.3f % f % f % f\n", a, b[0], b[1], Sint[a]
34
+ end
35
+ #STDERR.puts s
@@ -1,34 +1,34 @@
1
- #! /usr/local/bin/ruby
2
- require 'pspline'
3
- include PSPLINE
4
-
5
- n = 7
6
- j = 2
7
- s = 2
8
-
9
- puts "# Riesenfeld interpolation"
10
-
11
- X = [0, 1, 2, 3, 4, 5, 6]
12
- Y = [ [ 0.0, 0.0],[ 3.0, 0.0],[ 3.0, 1.0],[ 0.5, 2.0],
13
- [ 0.5, 6.0],[ 5.0, 6.0],[ 5.0, 9.0] ]
14
-
15
- Jbn = ARGV[0].to_i
16
-
17
- Dp = 10
18
-
19
- Rs = Pspline.new(Y, [X], [n], [j], [s])
20
-
21
- Y.each do |p|
22
- printf "% f, % f\n", p[0], p[1]
23
- end
24
- printf "# value of interpolation points, Dp = %d", Dp
25
- if Jbn == 0
26
- print "\n"
27
- else
28
- printf ", Jbn = %d\n", Jbn
29
- end
30
- vv = [X]
31
- s = Rs.plot(vv, Dp, [Jbn]) do |a, b|
32
- printf "% .2f, <% .7f, % .7f>\n", a[0], b[0], b[1]
33
- end
34
- #STDERR.puts s
1
+ #! /usr/local/bin/ruby
2
+ require 'pspline'
3
+ include PSPLINE
4
+
5
+ n = 7
6
+ j = 2
7
+ s = 2
8
+
9
+ puts "# Riesenfeld interpolation"
10
+
11
+ X = [0, 1, 2, 3, 4, 5, 6]
12
+ Y = [ [ 0.0, 0.0],[ 3.0, 0.0],[ 3.0, 1.0],[ 0.5, 2.0],
13
+ [ 0.5, 6.0],[ 5.0, 6.0],[ 5.0, 9.0] ]
14
+
15
+ Jbn = ARGV[0].to_i
16
+
17
+ Dp = 10
18
+
19
+ Rs = Pspline.new(Y, [X], [n], [j], [s])
20
+
21
+ Y.each do |p|
22
+ printf "% f, % f\n", p[0], p[1]
23
+ end
24
+ printf "# value of interpolation points, Dp = %d", Dp
25
+ if Jbn == 0
26
+ print "\n"
27
+ else
28
+ printf ", Jbn = %d\n", Jbn
29
+ end
30
+ vv = [X]
31
+ s = Rs.plot(vv, Dp, [Jbn]) do |a, b|
32
+ printf "% .2f, <% .7f, % .7f>\n", a[0], b[0], b[1]
33
+ end
34
+ #STDERR.puts s
@@ -1,34 +1,34 @@
1
- #! /usr/local/bin/ruby
2
- require 'pspline'
3
- include PSPLINE
4
-
5
- n = 7
6
- j = 2
7
- s = 2
8
-
9
- puts "# Riesenfeld interpolation"
10
-
11
- XY = [ [0, 0.0, 0.0],[1, 3.0, 0.0],[2, 3.0, 1.0],[3, 0.5, 2.0],
12
- [4, 0.5, 6.0],[5, 5.0, 6.0],[6, 5.0, 9.0] ]
13
-
14
- Jbn = ARGV[0].to_i
15
-
16
- Dp = 10
17
-
18
- Rs = Bspline.new(XY, n, j, s)
19
-
20
- vv = []
21
- XY.each do |p|
22
- printf "% f, % f\n", p[1], p[2]
23
- vv.push p[0]
24
- end
25
- printf "# value of interpolation points, Dp = %d", Dp
26
- if Jbn == 0
27
- print "\n"
28
- else
29
- printf ", Jbn = %d\n", Jbn
30
- end
31
- s = Rs.plot(vv, Dp, Jbn) do |a, b|
32
- printf "% .2f % .7f % .7f\n", a, b[0], b[1]
33
- end
34
- #STDERR.puts s
1
+ #! /usr/local/bin/ruby
2
+ require 'pspline'
3
+ include PSPLINE
4
+
5
+ n = 7
6
+ j = 2
7
+ s = 2
8
+
9
+ puts "# Riesenfeld interpolation"
10
+
11
+ XY = [ [0, 0.0, 0.0],[1, 3.0, 0.0],[2, 3.0, 1.0],[3, 0.5, 2.0],
12
+ [4, 0.5, 6.0],[5, 5.0, 6.0],[6, 5.0, 9.0] ]
13
+
14
+ Jbn = ARGV[0].to_i
15
+
16
+ Dp = 10
17
+
18
+ Rs = Bspline.new(XY, n, j, s)
19
+
20
+ vv = []
21
+ XY.each do |p|
22
+ printf "% f, % f\n", p[1], p[2]
23
+ vv.push p[0]
24
+ end
25
+ printf "# value of interpolation points, Dp = %d", Dp
26
+ if Jbn == 0
27
+ print "\n"
28
+ else
29
+ printf ", Jbn = %d\n", Jbn
30
+ end
31
+ s = Rs.plot(vv, Dp, Jbn) do |a, b|
32
+ printf "% .2f % .7f % .7f\n", a, b[0], b[1]
33
+ end
34
+ #STDERR.puts s
@@ -1,44 +1,44 @@
1
- #! /usr/local/bin/ruby
2
- require 'pspline'
3
- include PSPLINE
4
-
5
- nn = [4, 6]
6
- jj = [3, 2]
7
- ss = [3, 2]
8
-
9
- puts "# Reisenfeld interpolation"
10
-
11
- S = [0, 1, 2, 3, 4]
12
- T = [0, 1, 2, 3, 4, 5]
13
-
14
- XYZ = [ [[ 0.0, 5.0, 9.0],[ 0.0, 5.0, 6.0],[ 0.0, 0.5, 6.0],[ 0.0, 0.5, 2.0],[ 0.0, 3.0, 1.0],[ 0.0, 3.0, 0.0]],
15
- [[ 5.0,-2.5, 6.5],[ 5.0,-2.5, 3.5],[ 0.5,-0.25,5.75],[0.5,-0.25,1.75],[3.0,-1.5,-0.5],[ 3.0,-1.5,-1.5]],
16
- [[ 0.0,-5.0, 9.0],[ 0.0,-5.0, 6.0],[ 0.0,-0.5, 6.0],[ 0.0,-0.5, 2.0],[ 0.0,-3.0, 1.0],[ 0.0,-3.0, 0.0]],
17
- [[-5.0, 2.5,11.5],[-5.0, 2.5, 8.5],[-0.5,0.25,6.25],[-0.5,0.25,2.25],[-3.0, 1.5, 2.5],[-3.0, 1.5, 1.5]] ]
18
-
19
- Jbn = ARGV[0].to_i
20
-
21
- Dp = 8
22
-
23
- Rs = Pspline.new(XYZ, [S, T], nn, jj, ss)
24
-
25
- for i in 0..3
26
- for j in 0..5
27
- printf("<%d,%d>", S[i], T[j])
28
- u = XYZ[i][j]
29
- printf(" % .7f % .7f %10.7f\n", u[0], u[1], u[2])
30
- end
31
- end
32
- printf "# value of interpolation points, Dp = %d", Dp
33
- if Jbn == 0
34
- print "\n"
35
- else
36
- printf ", Jbn = %d\n", Jbn
37
- end
38
- vv = [S, T]
39
- N = Rs.plot(vv, Dp, [Jbn,0]) do |a, b|
40
- if (a[1] == 0.0)
41
- printf("%.3f %.3f % .7f % .7f %10.7f\n", a[0], a[1], b[0], b[1], b[2])
42
- end
43
- end
44
- #STDERR.puts N
1
+ #! /usr/local/bin/ruby
2
+ require 'pspline'
3
+ include PSPLINE
4
+
5
+ nn = [4, 6]
6
+ jj = [3, 2]
7
+ ss = [3, 2]
8
+
9
+ puts "# Reisenfeld interpolation"
10
+
11
+ S = [0, 1, 2, 3, 4]
12
+ T = [0, 1, 2, 3, 4, 5]
13
+
14
+ XYZ = [ [[ 0.0, 5.0, 9.0],[ 0.0, 5.0, 6.0],[ 0.0, 0.5, 6.0],[ 0.0, 0.5, 2.0],[ 0.0, 3.0, 1.0],[ 0.0, 3.0, 0.0]],
15
+ [[ 5.0,-2.5, 6.5],[ 5.0,-2.5, 3.5],[ 0.5,-0.25,5.75],[0.5,-0.25,1.75],[3.0,-1.5,-0.5],[ 3.0,-1.5,-1.5]],
16
+ [[ 0.0,-5.0, 9.0],[ 0.0,-5.0, 6.0],[ 0.0,-0.5, 6.0],[ 0.0,-0.5, 2.0],[ 0.0,-3.0, 1.0],[ 0.0,-3.0, 0.0]],
17
+ [[-5.0, 2.5,11.5],[-5.0, 2.5, 8.5],[-0.5,0.25,6.25],[-0.5,0.25,2.25],[-3.0, 1.5, 2.5],[-3.0, 1.5, 1.5]] ]
18
+
19
+ Jbn = ARGV[0].to_i
20
+
21
+ Dp = 8
22
+
23
+ Rs = Pspline.new(XYZ, [S, T], nn, jj, ss)
24
+
25
+ for i in 0..3
26
+ for j in 0..5
27
+ printf("<%d,%d>", S[i], T[j])
28
+ u = XYZ[i][j]
29
+ printf(" % .7f % .7f %10.7f\n", u[0], u[1], u[2])
30
+ end
31
+ end
32
+ printf "# value of interpolation points, Dp = %d", Dp
33
+ if Jbn == 0
34
+ print "\n"
35
+ else
36
+ printf ", Jbn = %d\n", Jbn
37
+ end
38
+ vv = [S, T]
39
+ N = Rs.plot(vv, Dp, [Jbn,0]) do |a, b|
40
+ if (a[1] == 0.0)
41
+ printf("%.3f %.3f % .7f % .7f %10.7f\n", a[0], a[1], b[0], b[1], b[2])
42
+ end
43
+ end
44
+ #STDERR.puts N