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.
- checksums.yaml +4 -4
- data/Gemfile +5 -5
- data/README.md +1 -0
- data/Rakefile +6 -6
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/ext/pspline/example/exbspline.rb +57 -36
- data/ext/pspline/example/excspline.rb +57 -36
- data/ext/pspline/example/exdspline.rb +55 -33
- data/ext/pspline/example/exfspline.rb +44 -44
- data/ext/pspline/example/exfspline1.rb +40 -40
- data/ext/pspline/example/exfspline2.rb +68 -0
- data/ext/pspline/example/exfspline3.rb +64 -0
- data/ext/pspline/example/exmspline.rb +68 -0
- data/ext/pspline/example/expspline.rb +29 -29
- data/ext/pspline/example/expspline1.rb +29 -29
- data/ext/pspline/example/expspline2.rb +47 -47
- data/ext/pspline/example/exqspline.rb +31 -31
- data/ext/pspline/example/exqspline2.rb +50 -50
- data/ext/pspline/example/exqspline3.rb +51 -51
- data/ext/pspline/example/exqspline4.rb +35 -0
- data/ext/pspline/example/exrspline.rb +34 -34
- data/ext/pspline/example/exrspline1.rb +34 -34
- data/ext/pspline/example/exrspline2.rb +44 -44
- data/ext/pspline/example/exsspline.rb +35 -35
- data/ext/pspline/example/exsspline1.rb +35 -35
- data/ext/pspline/example/extspline.rb +54 -32
- data/ext/pspline/include/basis/pspline.h +156 -20
- data/ext/pspline/include/bspline_Config.h +2 -2
- data/ext/pspline/plotsub.cpp +15 -8
- data/ext/pspline/pspline.cpp +160 -66
- data/lib/pspline.rb +71 -63
- data/lib/pspline/version.rb +3 -3
- data/pspline.gemspec +25 -25
- metadata +7 -13
- data/ext/pspline/example/example.rb +0 -34
- data/ext/pspline/example/exbspline.ps +0 -2194
- data/ext/pspline/example/excspline.ps +0 -2985
- data/ext/pspline/example/exdspline.ps +0 -2846
- data/ext/pspline/example/expspline.ps +0 -3299
- data/ext/pspline/example/exqspline.ps +0 -2957
- data/ext/pspline/example/exrspline.ps +0 -2812
- data/ext/pspline/example/exsspline.ps +0 -1965
- 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
|