Method: Rubyvis::SvgScene.path_segment

Defined in:
lib/rubyvis/scene/svg_line.rb

.path_segment(s1, s2) ⇒ Object

Returns the path segment for the specified points. */



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/rubyvis/scene/svg_line.rb', line 114

def self.path_segment(s1, s2) 
  l = 1; # sweep-flag
  l = 0 if s1.interpolate=='polar-reverse'
  
  if s1.interpolate=='polar' or s1.interpolate=='polar-reverse'
    dx = s2.left - s1.left
    dy = s2.top - s1.top
    e = 1 - s1.eccentricity
    r = Math.sqrt(dx * dx + dy * dy) / (2 * e)
    if !((e<=0) or (e>1))
      return "A#{r},#{r} 0 0,#{l} #{s2.left},#{s2.top}"
    end
  end
  
  if s1.interpolate=="step-before"
    return "V#{s2.top}H#{s2.left}"
  elsif s1.interpolate=="step-after"
    return "H#{s2.left}V#{s2.top}"
  end
  
  return "L#{s2.left},#{s2.top}"
end