1
Extension { #name : #Rectangle }
3
{ #category : #'*DrGeoII-Core-intersection' }
4
Rectangle >> intersectionWith: aLineSeg [
6
intersections := Set new.
8
intersectionWith: (LineSegment from: self origin to: self bottomLeft))
9
ifNotNil: [:inter | intersections add: inter].
11
intersectionWith: (LineSegment from: self origin to: self topRight))
12
ifNotNil: [:inter | intersections add: inter].
14
intersectionWith: (LineSegment from: self corner to: self bottomLeft))
15
ifNotNil: [:inter | intersections add: inter].
17
intersectionWith: (LineSegment from: self corner to: self topRight))
18
ifNotNil: [:inter | intersections add: inter].
19
intersections := intersections asOrderedCollection.
20
intersections size = 2
21
ifTrue: [^ LineSegment from: intersections first to: intersections second].
22
intersections size = 0
24
[(self containsPoint: aLineSeg start)
25
ifTrue: [(self containsPoint: aLineSeg end) ifTrue: [^aLineSeg ]]
26
ifFalse: [(self containsPoint: aLineSeg end) ifFalse: [^nil]]].
28
(self containsPoint: aLineSeg start)
30
(self containsPoint: aLineSeg start)
32
ifFalse: [^LineSegment from: aLineSeg start to: intersections first]].
33
(self containsPoint: aLineSeg end)
34
ifTrue: [^LineSegment from: aLineSeg end to: intersections first].