linesweeper 0.3.0

Robust sweep-line algorithm and two-dimensional boolean ops
Documentation
---
source: src/topology.rs
expression: top
---
Topology(
  eps: 0.01,
  tag: [
    true,
    true,
    true,
    true,
    true,
    true,
    true,
  ],
  open_segs: [
    [],
    [],
    [],
    [],
    [],
    [],
    [],
  ],
  winding: OutputSegVec(
    inner: [
      HalfSegmentWindingNumbers(
        counter_clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
        clockwise: BinaryWindingNumber(
          shape_a: 0,
          shape_b: 0,
        ),
      ),
      HalfSegmentWindingNumbers(
        counter_clockwise: BinaryWindingNumber(
          shape_a: 0,
          shape_b: 0,
        ),
        clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
      ),
      HalfSegmentWindingNumbers(
        counter_clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
        clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
      ),
      HalfSegmentWindingNumbers(
        counter_clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
        clockwise: BinaryWindingNumber(
          shape_a: -2,
          shape_b: 0,
        ),
      ),
      HalfSegmentWindingNumbers(
        counter_clockwise: BinaryWindingNumber(
          shape_a: 0,
          shape_b: 0,
        ),
        clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
      ),
      HalfSegmentWindingNumbers(
        counter_clockwise: BinaryWindingNumber(
          shape_a: 0,
          shape_b: 0,
        ),
        clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
      ),
      HalfSegmentWindingNumbers(
        counter_clockwise: BinaryWindingNumber(
          shape_a: -1,
          shape_b: 0,
        ),
        clockwise: BinaryWindingNumber(
          shape_a: 0,
          shape_b: 0,
        ),
      ),
    ],
  ),
  points: PointVec(
    inner: [
      Point(
        y: 0.0,
        x: 0.0,
      ),
      Point(
        y: 0.0,
        x: 0.5,
      ),
      Point(
        y: 0.0,
        x: 1.0,
      ),
      Point(
        y: 0.5,
        x: 0.5,
      ),
      Point(
        y: 1.0,
        x: 0.0,
      ),
      Point(
        y: 1.0,
        x: 1.0,
      ),
    ],
  ),
  point_idx: HalfOutputSegVec(
    start: [
      PointIdx(0),
      PointIdx(0),
      PointIdx(1),
      PointIdx(1),
      PointIdx(1),
      PointIdx(2),
      PointIdx(4),
    ],
    end: [
      PointIdx(4),
      PointIdx(1),
      PointIdx(3),
      PointIdx(3),
      PointIdx(2),
      PointIdx(5),
      PointIdx(5),
    ],
  ),
  point_neighbors: HalfOutputSegVec(
    start: [
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(1),
          first_half: true,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(1),
          first_half: true,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(0),
          first_half: true,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(0),
          first_half: true,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(1),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(4),
          first_half: true,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(2),
          first_half: true,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(4),
          first_half: true,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(1),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(1),
          first_half: false,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(4),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(4),
          first_half: false,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(0),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(0),
          first_half: false,
        ),
      ),
    ],
    end: [
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(6),
          first_half: true,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(6),
          first_half: true,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(4),
          first_half: true,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(4),
          first_half: true,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(2),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(2),
          first_half: false,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(2),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(2),
          first_half: false,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(5),
          first_half: true,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(5),
          first_half: true,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(6),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(6),
          first_half: false,
        ),
      ),
      PointNeighbors(
        clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(5),
          first_half: false,
        ),
        counter_clockwise: HalfOutputSegIdx(
          idx: OutputSegIdx(5),
          first_half: false,
        ),
      ),
    ],
  ),
  deleted: OutputSegVec(
    inner: [
      false,
      false,
      true,
      true,
      false,
      false,
      false,
    ],
  ),
  scan_west: OutputSegVec(
    inner: [
      None,
      Some(OutputSegIdx(0)),
      Some(OutputSegIdx(0)),
      Some(OutputSegIdx(2)),
      Some(OutputSegIdx(3)),
      Some(OutputSegIdx(3)),
      None,
    ],
  ),
  scan_east: OutputSegVec(
    inner: [
      None,
      None,
      None,
      None,
      None,
      None,
      None,
    ],
  ),
  scan_after: [
    (0.5, Some(OutputSegIdx(0)), Some(OutputSegIdx(5))),
  ],
  orig_seg: OutputSegVec(
    inner: [
      SegIdx(6),
      SegIdx(0),
      SegIdx(2),
      SegIdx(1),
      SegIdx(3),
      SegIdx(4),
      SegIdx(5),
    ],
  ),
  positively_oriented: OutputSegVec(
    inner: [
      false,
      true,
      false,
      true,
      true,
      true,
      false,
    ],
  ),
)