class GreinerHormann::Intersection

Attributes

to_clip[RW]
to_source[RW]
x[RW]
y[RW]

Public Class Methods

new(s1, s2, c1, c2) click to toggle source
# File lib/greiner_hormann/intersection.rb, line 5
def initialize(s1, s2, c1, c2)
  self.x = self.y = self.to_source = self.to_clip = 0.0
  d = (c2.y - c1.y) * (s2.x - s1.x) - (c2.x - c1.x) * (s2.y - s1.y)
  return if d == 0

  self.to_source = ((c2.x - c1.x) * (s1.y - c1.y) - (c2.y - c1.y) * (s1.x - c1.x)) / d
  self.to_clip = ((s2.x - s1.x) * (s1.y - c1.y) - (s2.y - s1.y) * (s1.x - c1.x)) / d

  if valid
    self.x = s1.x + self.to_source * (s2.x - s1.x)
    self.y = s1.y + self.to_source * (s2.y - s1.y)
  end
end

Public Instance Methods

valid() click to toggle source
# File lib/greiner_hormann/intersection.rb, line 19
def valid
  0 < to_source && to_source < 1 && 0 < to_clip && to_clip < 1
end