SFSweepLine

Objective-C

@interface SFSweepLine : NSObject

Swift

class SFSweepLine : NSObject

Sweep Line algorithm

  • Initialize

    Declaration

    Objective-C

    - (instancetype)initWithRings:(NSArray<SFLineString *> *)rings;

    Swift

    init!(rings: [SFLineString]!)

    Parameters

    rings

    polygon rings

    Return Value

    sweep line

  • Add the event to the sweep line

    Declaration

    Objective-C

    - (SFSegment *)addEvent:(SFEvent *)event;

    Swift

    func add(_ event: SFEvent!) -> SFSegment!

    Parameters

    event

    event

    Return Value

    added segment

  • Find the existing event segment

    Declaration

    Objective-C

    - (SFSegment *)findEvent:(SFEvent *)event;

    Swift

    func find(_ event: SFEvent!) -> SFSegment!

    Parameters

    event

    event

    Return Value

    segment

  • Determine if the two segments intersect

    Declaration

    Objective-C

    - (BOOL)intersectWithSegment:(SFSegment *)segment1
                      andSegment:(SFSegment *)segment2;

    Swift

    func intersect(with segment1: SFSegment!, andSegment segment2: SFSegment!) -> Bool

    Parameters

    segment1

    segment 1

    segment2

    segment 2

    Return Value

    true if intersection, false if not

  • Remove the segment from the sweep line

    Declaration

    Objective-C

    - (void)removeSegment:(SFSegment *)segment;

    Swift

    func remove(_ segment: SFSegment!)

    Parameters

    segment

    segment

  • XY order of two points

    Declaration

    Objective-C

    + (NSComparisonResult)xyOrderWithPoint:(SFPoint *)point1
                                  andPoint:(SFPoint *)point2;

    Swift

    class func xyOrder(with point1: SFPoint!, andPoint point2: SFPoint!) -> ComparisonResult

    Parameters

    point1

    point 1

    point2

    point 2

    Return Value

    NSOrderedDescending if p1 > p2, NSOrderedAscending if p1 < p2, NSOrderedSame if equal