beziercurve 0.2 → 0.6

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/beziercurve.rb +18 -25
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 74aa0dc585f1edb095064ba09657e27275be7cfc
4
- data.tar.gz: 2723fda7a6e4b4a23c94c701da3b9760bac2e847
3
+ metadata.gz: 27e5be3280b88a9b7f105e9684bb3e92fad3ed9c
4
+ data.tar.gz: a2ec45dfe488b6deb17073ca90c140d5a2acdf10
5
5
  SHA512:
6
- metadata.gz: 14cd524785cb7c3ba5c6cef5dfb5a8caf91f1e4d4e809e3358f29c1b7f2470374d433a44a0fbc7cdd959056c90acbe8902db5ccab9cc67185e181dc66520ee1b
7
- data.tar.gz: 080d20f696ff4c346d4d5200d7abbc56a5bd3fa5d177aa526279b0911e4cd755121d3bb6f1b37dcd3e3520df2682a7af3fa4432a7c290638e24a49f647727df0
6
+ metadata.gz: 3344ae1275b60c6fb196efcd50f0cc30e8aafc07de95a075b4e8b6509c12577dbadc805caf6aee60d82440f1dd4c8b3017c71e4b1d0e4a7f99040d8e55f80a22
7
+ data.tar.gz: 65a9f4e29b4d02cb99facde883c9e5a1f5c98f650ef4cb2b610bfe3aee288e15d849ff2a78bfb879c6366ac62003d8e88ad091c0aa163e1c182e98715fed488b
data/lib/beziercurve.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  module Bezier
2
2
 
3
3
  class ControlPoint
4
- # maybe replace the accessors and initialization with Struct
5
4
  attr_accessor :x, :y
6
5
  def initialize(x,y)
7
6
  @x = x
@@ -20,39 +19,40 @@ module Bezier
20
19
  CurvePoint.new(self.x, self.y)
21
20
  end
22
21
  end
23
- class CurvePoint < ControlPoint # minimal type safety, but both class have the same functionality
22
+ class CurvePoint < ControlPoint
23
+ # @return [ControlPoint] the object converted into the expected format.
24
24
  def to_control
25
25
  ControlPoint.new(self.x, self.y)
26
26
  end
27
27
  end
28
28
  class Curve
29
- attr_accessor :hullpoints
29
+ attr_accessor :controlpoints
30
30
 
31
- def initialize(*hullpoints)
31
+ def initialize(*controlpoints)
32
32
  # need at least 3 control points
33
- if hullpoints.length < 3 then
34
- raise "Cannot create Bézier curve with less than 3 control points"
33
+ if controlpoints.length < 3
34
+ raise 'Cannot create Bézier curve with less than 3 control points'
35
35
  end
36
36
 
37
- # check for rogue value types
38
- if hullpoints.find {|p| p.class != ControlPoint} == nil
39
- @hullpoints = hullpoints
37
+ # check for proper types
38
+ if controlpoints.find {|p| p.class != ControlPoint} == nil
39
+ @controlpoints = controlpoints
40
40
  end
41
41
  end
42
42
 
43
43
  def add(point)
44
44
  if point.class == ControlPoint
45
- @hullpoints << point
45
+ @controlpoints << point
46
46
  else
47
- raise TypeError, "Point should be type of ControlPoint"
47
+ raise TypeError, 'Point should be type of ControlPoint'
48
48
  end
49
49
  end
50
50
 
51
51
  def point_on_curve(t)
52
-
52
+
53
53
  def point_on_hull(point1, point2, t) # making this local
54
54
  if (point1.class != ControlPoint) or (point2.class != ControlPoint)
55
- raise TypeError, "Both points should be type of ControlPoint"
55
+ raise TypeError, 'Both points should be type of ControlPoint'
56
56
  end
57
57
  new_x = (point1.x - point2.x) * t
58
58
  new_y = (point1.y - point2.y) * t
@@ -60,14 +60,14 @@ module Bezier
60
60
  end
61
61
 
62
62
  # imperatively ugly but works, refactor later. point_on_curve and point_on_hull should be one method
63
- ary = @hullpoints
63
+ ary = @controlpoints
64
64
  return ary if ary.length <= 1 # zero or one element as argument, return unmodified
65
65
 
66
66
  while ary.length > 1
67
67
  temp = []
68
68
  0.upto(ary.length-2) do |index|
69
- memoize1 = point_on_hull(ary[index], ary[index+1], t)
70
- temp << ary[index+0] - memoize1
69
+ memoize1 = point_on_hull(ary[index], ary[index+1], t)
70
+ temp << ary[index+0] - memoize1
71
71
  end
72
72
  ary = temp
73
73
  end
@@ -75,7 +75,7 @@ module Bezier
75
75
  end
76
76
 
77
77
  def display_points # just a helper, for quickly put CotrolPOints to STDOUT in a gnuplottable format
78
- @hullpoints.map{|point| puts "#{point.x} #{point.y}"}
78
+ @controlpoints.map{|point| puts "#{point.x} #{point.y}"}
79
79
  end
80
80
 
81
81
  def enumerated(start_t, delta_t)
@@ -92,14 +92,7 @@ module Bezier
92
92
  end
93
93
 
94
94
  def order
95
- @hullpoints.length
95
+ @controlpoints.length
96
96
  end
97
97
  end
98
98
  end
99
-
100
- __END__
101
-
102
- bezier = Bezier::Curve.new(Bezier::ControlPoint.new(40,250), Bezier::ControlPoint.new(35,100), Bezier::ControlPoint.new(150,70), Bezier::ControlPoint.new(210,120)) # cubic curve, 4 coordinates
103
-
104
- puts bezier.hullpoints[0].x
105
- #puts "#{bezier.point_on_curve(0.013).x} #{bezier.point_on_curve(0.013).y}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beziercurve
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Földes László
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-04 00:00:00.000000000 Z
11
+ date: 2013-12-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Creates a Bézier curve by its control points. Implemented with de Casteljau
14
14
  method.
@@ -41,6 +41,6 @@ rubyforge_project:
41
41
  rubygems_version: 2.1.10
42
42
  signing_key:
43
43
  specification_version: 4
44
- summary: Create Bnd analyze ézier curves
44
+ summary: Create and analyze Bézier curves
45
45
  test_files: []
46
46
  has_rdoc: