@@ -2451,9 +2451,6 @@ def test25_segments_triads_orientation(self):
24512451 self .assertEqual (o .level (), DBG )
24522452 self .assertEqual (o .status (), 0 )
24532453
2454- # --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- #
2455- # Basic OpenStudio intersection methods.
2456-
24572454 # Enclosed polygon.
24582455 p0 = openstudio .Point3d (- 5 , - 5 , - 5 )
24592456 p1 = openstudio .Point3d ( 5 , 5 , - 5 )
@@ -2510,9 +2507,49 @@ def test25_segments_triads_orientation(self):
25102507 self .assertTrue (o .is_error ())
25112508 self .assertEqual (len (o .logs ()), 1 )
25122509 self .assertEqual (o .logs ()[0 ]["message" ], m2 )
2513-
25142510 self .assertTrue (o .clean (), DBG )
25152511
2512+ # CASE a1: 2x end-to-end line segments (returns matching endpoints).
2513+ self .assertTrue (osut .doesLineIntersect ([p0 , p1 ], [p1 , p2 ]))
2514+ pt = osut .lineIntersection ([p0 , p1 ], [p1 , p2 ])
2515+ self .assertTrue (osut .areSame (pt , p1 ))
2516+ #
2517+ # # CASE a2: as a1, sequence of line segment endpoints doesn't matter.
2518+ self .assertTrue (osut .doesLineIntersect ([p1 , p0 ], [p1 , p2 ]))
2519+ pt = osut .lineIntersection ([p1 , p0 ], [p1 , p2 ])
2520+ self .assertTrue (osut .areSame (pt , p1 ))
2521+ #
2522+ # # CASE b1: 2x right-angle line segments, with 1x matching at corner.
2523+ self .assertTrue (osut .doesLineIntersect ([p1 , p2 ], [p1 , p3 ]))
2524+ pt = osut .lineIntersection ([p1 , p2 ], [p2 , p3 ])
2525+ self .assertTrue (osut .areSame (pt , p2 ))
2526+ #
2527+ # # CASE b2: as b1, sequence of segments doesn't matter.
2528+ self .assertTrue (osut .doesLineIntersect ([p2 , p3 ], [p1 , p2 ]))
2529+ pt = osut .lineIntersection ([p2 , p3 ], [p1 , p2 ])
2530+ self .assertTrue (osut .areSame (pt , p2 ))
2531+
2532+ # CASE c: 2x right-angle line segments, yet disconnected.
2533+ self .assertFalse (osut .doesLineIntersect ([p0 , p1 ], [p2 , p3 ]))
2534+ pt = osut .lineIntersection ([p0 , p1 ], [p2 , p3 ])
2535+ self .assertFalse (pt )
2536+
2537+ # CASE d: 2x connected line segments, acute angle.
2538+ self .assertTrue (osut .doesLineIntersect ([p0 , p2 ], [p3 , p0 ]))
2539+ pt = osut .lineIntersection ([p0 , p2 ], [p3 , p0 ])
2540+ self .assertTrue (osut .areSame (pt , p0 ))
2541+ #
2542+ # # CASE e1: 2x disconnected line segments, right angle.
2543+ self .assertTrue (osut .doesLineIntersect ([p0 , p2 ], [p4 , p6 ]))
2544+ pt = osut .lineIntersection ([p0 , p2 ], [p4 , p6 ])
2545+ self .assertTrue (osut .areSame (pt , p5 ))
2546+ #
2547+ # # CASE e2: as e1, sequence of line segment endpoints doesn't matter.
2548+ self .assertTrue (osut .doesLineIntersect ([p0 , p2 ], [p6 , p4 ]))
2549+ pt = osut .lineIntersection ([p0 , p2 ], [p6 , p4 ])
2550+ self .assertTrue (osut .areSame (pt , p5 ))
2551+
2552+
25162553 def test26_ulc_blc (self ):
25172554 o = osut .oslg
25182555 self .assertEqual (o .status (), 0 )
0 commit comments