class Draught::Corner::JoinAngles
Attributes
incoming_line[R]
outgoing_line[R]
Public Class Methods
new(incoming_line, outgoing_line)
click to toggle source
# File lib/draught/corner.rb, line 92 def initialize(incoming_line, outgoing_line) @incoming_line = incoming_line @outgoing_line = outgoing_line end
Public Instance Methods
arc_sweep()
click to toggle source
# File lib/draught/corner.rb, line 97 def arc_sweep anticlockwise? ? abs_arc_sweep : abs_arc_sweep * -1 end
tangent_distance(radius)
click to toggle source
# File lib/draught/corner.rb, line 101 def tangent_distance(radius) radius / Math.tan(abs_corner_angle / 2.0) end
Private Instance Methods
abs_arc_sweep()
click to toggle source
# File lib/draught/corner.rb, line 138 def abs_arc_sweep @abs_arc_sweep ||= Math::PI - abs_corner_angle end
abs_corner_angle()
click to toggle source
# File lib/draught/corner.rb, line 107 def abs_corner_angle @abs_corner_angle ||= begin half_corner_angle = Math.asin(corner_top_line.length/incoming_corner_line.length) half_corner_angle * 2.0 end end
aligned_zeroed_lines()
click to toggle source
# File lib/draught/corner.rb, line 154 def aligned_zeroed_lines @aligned_zeroed_lines ||= begin joined_lines = PathBuilder.connect(incoming_line, outgoing_line) zeroed_joined_lines = joined_lines.translate(Vector.translation_to_zero(joined_lines.first)) zeroed_joined_lines.transform(Transformations.rotate(incoming_line.radians * -1)) end end
anticlockwise?()
click to toggle source
# File lib/draught/corner.rb, line 142 def anticlockwise? !clockwise? end
clockwise?()
click to toggle source
# File lib/draught/corner.rb, line 146 def clockwise? if aligned_zeroed_lines[0].x > aligned_zeroed_lines[1].x aligned_zeroed_lines[0].y < aligned_zeroed_lines[2].y else aligned_zeroed_lines[0].y > aligned_zeroed_lines[2].y end end
corner_top_line()
click to toggle source
# File lib/draught/corner.rb, line 114 def corner_top_line @corner_top_line ||= begin corner_top_line = Line.build({ start_point: incoming_corner_line.start_point, end_point: outgoing_corner_line.end_point }) corner_top_line.extend(to: corner_top_line.length / 2.0) end end
incoming_corner_line()
click to toggle source
# File lib/draught/corner.rb, line 123 def incoming_corner_line @incoming_corner_line ||= zeroed_unit_line_segment(incoming_line, :last) end
outgoing_corner_line()
click to toggle source
# File lib/draught/corner.rb, line 127 def outgoing_corner_line @outgoing_corner_line ||= zeroed_unit_line_segment(outgoing_line, :first) end
zeroed_unit_line_segment(segment, zero_to_point)
click to toggle source
# File lib/draught/corner.rb, line 131 def zeroed_unit_line_segment(segment, zero_to_point) unit_line_segment = segment.extend(to: 1) unit_line_segment.translate( Vector.translation_to_zero(unit_line_segment.public_send(zero_to_point)) ) end