Author | Manuela Ruiz (mruiz@lcc.uma.es) |
This class represents a Line Descriptor, used to describe the ‘mother line’ of a set of segments
sine | the sine of the angle of the line. |
intercept | the point in which the line intercepts the y-axis. In case it is vertical, the x-axis |
Initializes the line
# File lib/geometry.rb, line 213 213: def initialize(sine, intercept) 214: @sine, @intercept = sine, intercept 215: end
other_line_descriptor | another LineDescriptor object |
returns | true iff this LineDescriptor is lesser than other_line_descriptor, w.r.t. a lexicographic order of (sine, intercept) |
# File lib/geometry.rb, line 239 239: def < (other_line_descriptor) 240: #It works because the angles of the lines are always on the first and fourth quadrant. The growth of the sine 241: #in these quadrants is identical to the tangent growth. 242: 243: result = false 244: if other_line_descriptor.kind_of? LineDescriptor 245: dif_sine = (@sine-other_line_descriptor.sine) 246: abs_sine = dif_sine.abs 247: if (dif_sine < 0) && (abs_sine > Constants::EPSILON) 248: result = true 249: elsif abs_sine < Constants::EPSILON 250: dif_intercept =(@intercept-other_line_descriptor.intercept) 251: abs_intercept = dif_intercept.abs 252: if (dif_intercept < 0) && (abs_intercept > Constants::EPSILON) 253: result = true 254: end 255: end 256: end 257: return result 258: 259: end
other_line_descriptor | another LineDescriptor object |
returns | true iff this LineDescriptor is equal than other_line_descriptor |
# File lib/geometry.rb, line 264 264: def == (other_line_descriptor) 265: 266: result = false 267: if other_line_descriptor.kind_of? LineDescriptor 268: dif_sine = (@sine-other_line_descriptor.sine).abs 269: dif_intercept = (@intercept-other_line_descriptor.intercept).abs 270: result = ((dif_sine < Constants::EPSILON) && (dif_intercept < Constants::EPSILON)) 271: end 272: return result 273: end
returns | a new LineDescriptor, identical to this one |
# File lib/geometry.rb, line 276 276: def clone() 277: return LineDescriptor.new(@sine, @intercept) 278: end
returns | the hash code for this line_descriptor |
# File lib/geometry.rb, line 281 281: def hash 282: return [@sine.hash, @intercept.hash].hash 283: end
point | an OrderedPoint |
returns | true iff the point satisfies the line ecuation |
# File lib/geometry.rb, line 220 220: def satisfied? (point) 221: result = false 222: 223: cosine = Math.sqrt(1-(@sine**2)) 224: if cosine == 0 #Vertical 225: result = (point.x == @intercept) 226: elsif @sine == 0 #Horizontal 227: result = (point.y== @intercept) 228: else #General case 229: slope = @sine /cosine 230: result = (point.y == (point.x * slope + @intercept)) 231: end 232: 233: return result 234: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.