Skip to content

Panic for simple path #11

@axle-h

Description

@axle-h

Tried triangulating this:

duck copy

Simplified as an example:

use poly2tri_rs::{SweeperBuilder, Point};

fn main() {
    SweeperBuilder::new(vec![
        Point::new(244.0,0.0), Point::new(279.0,0.0), Point::new(296.0,3.0),
        Point::new(299.0,5.0), Point::new(315.0,9.0), Point::new(324.0,14.0),
        Point::new(327.0,14.0), Point::new(330.0,17.0), Point::new(333.0,17.0),
        Point::new(334.0,19.0), Point::new(338.0,20.0), Point::new(339.0,22.0),
        Point::new(347.0,26.0), Point::new(354.0,33.0), Point::new(356.0,33.0),
        Point::new(369.0,47.0), Point::new(378.0,63.0), Point::new(381.0,75.0),
        Point::new(381.0,82.0), Point::new(396.0,97.0), Point::new(396.0,99.0),
        Point::new(408.0,110.0), Point::new(408.0,112.0), Point::new(410.0,112.0),
        Point::new(415.0,118.0), Point::new(423.0,122.0), Point::new(459.0,122.0),
        Point::new(463.0,126.0), Point::new(467.0,135.0), Point::new(467.0,151.0),
        Point::new(464.0,155.0), Point::new(459.0,156.0), Point::new(457.0,158.0),
        Point::new(430.0,165.0), Point::new(376.0,174.0), Point::new(347.0,176.0),
        Point::new(339.0,183.0), Point::new(322.0,189.0), Point::new(329.0,197.0),
        Point::new(329.0,199.0), Point::new(332.0,201.0), Point::new(334.0,206.0),
        Point::new(337.0,208.0), Point::new(341.0,216.0), Point::new(343.0,217.0),
        Point::new(344.0,221.0), Point::new(351.0,230.0), Point::new(364.0,256.0),
        Point::new(372.0,285.0), Point::new(371.0,307.0), Point::new(357.0,341.0),
        Point::new(355.0,342.0), Point::new(354.0,346.0), Point::new(352.0,347.0),
        Point::new(348.0,355.0), Point::new(345.0,357.0), Point::new(345.0,359.0),
        Point::new(340.0,363.0), Point::new(340.0,365.0), Point::new(326.0,379.0),
        Point::new(324.0,379.0), Point::new(320.0,384.0), Point::new(318.0,384.0),
        Point::new(307.0,394.0), Point::new(305.0,394.0), Point::new(304.0,396.0),
        Point::new(297.0,399.0), Point::new(293.0,403.0), Point::new(287.0,405.0),
        Point::new(286.0,407.0), Point::new(276.0,412.0), Point::new(302.0,408.0),
        Point::new(319.0,408.0), Point::new(328.0,411.0), Point::new(331.0,417.0),
        Point::new(330.0,419.0), Point::new(324.0,421.0), Point::new(324.0,423.0),
        Point::new(328.0,427.0), Point::new(330.0,427.0), Point::new(334.0,432.0),
        Point::new(333.0,437.0), Point::new(329.0,441.0), Point::new(319.0,444.0),
        Point::new(304.0,445.0), Point::new(297.0,449.0), Point::new(292.0,456.0),
        Point::new(285.0,460.0), Point::new(261.0,461.0), Point::new(235.0,459.0),
        Point::new(232.0,462.0), Point::new(228.0,462.0), Point::new(228.0,464.0),
        Point::new(238.0,469.0), Point::new(238.0,478.0), Point::new(229.0,484.0),
        Point::new(209.0,488.0), Point::new(205.0,492.0), Point::new(205.0,494.0),
        Point::new(197.0,500.0), Point::new(144.0,500.0), Point::new(115.0,497.0),
        Point::new(95.0,493.0), Point::new(81.0,487.0), Point::new(78.0,484.0),
        Point::new(77.0,478.0), Point::new(88.0,456.0), Point::new(90.0,455.0),
        Point::new(97.0,441.0), Point::new(105.0,431.0), Point::new(106.0,426.0),
        Point::new(103.0,426.0), Point::new(97.0,422.0), Point::new(92.0,421.0),
        Point::new(91.0,419.0), Point::new(83.0,416.0), Point::new(82.0,414.0),
        Point::new(78.0,413.0), Point::new(70.0,406.0), Point::new(68.0,406.0),
        Point::new(66.0,403.0), Point::new(64.0,403.0), Point::new(48.0,388.0),
        Point::new(48.0,386.0), Point::new(43.0,382.0), Point::new(43.0,380.0),
        Point::new(37.0,373.0), Point::new(31.0,361.0), Point::new(26.0,344.0),
        Point::new(25.0,323.0), Point::new(23.0,320.0), Point::new(23.0,316.0),
        Point::new(3.0,262.0), Point::new(2.0,253.0), Point::new(0.0,249.0),
        Point::new(0.0,227.0), Point::new(3.0,220.0), Point::new(8.0,214.0),
        Point::new(19.0,209.0), Point::new(36.0,209.0), Point::new(46.0,211.0),
        Point::new(73.0,222.0), Point::new(80.0,216.0), Point::new(98.0,207.0),
        Point::new(130.0,198.0), Point::new(156.0,195.0), Point::new(184.0,195.0),
        Point::new(203.0,197.0), Point::new(203.0,189.0), Point::new(197.0,182.0),
        Point::new(197.0,180.0), Point::new(189.0,173.0), Point::new(187.0,173.0),
        Point::new(185.0,170.0), Point::new(183.0,170.0), Point::new(176.0,162.0),
        Point::new(174.0,162.0), Point::new(174.0,160.0), Point::new(172.0,160.0),
        Point::new(172.0,158.0), Point::new(162.0,148.0), Point::new(162.0,146.0),
        Point::new(156.0,139.0), Point::new(151.0,129.0), Point::new(146.0,112.0),
        Point::new(145.0,101.0), Point::new(147.0,81.0), Point::new(151.0,68.0),
        Point::new(159.0,52.0), Point::new(161.0,51.0), Point::new(165.0,43.0),
        Point::new(168.0,41.0), Point::new(168.0,39.0), Point::new(178.0,29.0),
        Point::new(180.0,29.0), Point::new(183.0,25.0), Point::new(185.0,25.0),
        Point::new(193.0,18.0), Point::new(210.0,9.0), Point::new(232.0,2.0),
        Point::new(244.0,1.0)
    ]).build().triangulate();
}

I get a panic:

thread 'main' panicked at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/advancing_front/vec_backed.rs:239:67:
called `Result::unwrap()` on an `Err` value: 19
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a28077b28a02b92985b3a3faecf92813155f1ea1/library/std/src/panicking.rs:597:5
   1: core::panicking::panic_fmt
             at /rustc/a28077b28a02b92985b3a3faecf92813155f1ea1/library/core/src/panicking.rs:72:14
   2: core::result::unwrap_failed
             at /rustc/a28077b28a02b92985b3a3faecf92813155f1ea1/library/core/src/result.rs:1652:5
   3: core::result::Result<T,E>::unwrap
             at /rustc/a28077b28a02b92985b3a3faecf92813155f1ea1/library/core/src/result.rs:1077:23
   4: poly2tri_rs::advancing_front::vec_backed::AdvancingFront::update_triangle
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/advancing_front/vec_backed.rs:239:19
   5: poly2tri_rs::sweeper::Sweeper::map_triangle_to_nodes
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:511:17
   6: poly2tri_rs::sweeper::Sweeper::legalize
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:436:13
   7: poly2tri_rs::sweeper::Sweeper::fill_one
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:567:9
   8: poly2tri_rs::sweeper::Sweeper::fill_right_concave_edge_event
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:849:19
   9: poly2tri_rs::sweeper::Sweeper::fill_right_convex_edge_event
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:894:13
  10: poly2tri_rs::sweeper::Sweeper::fill_right_below_edge_event
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:830:13
  11: poly2tri_rs::sweeper::Sweeper::fill_right_above_edge_event
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:802:17
  12: poly2tri_rs::sweeper::Sweeper::fill_edge_event
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:782:13
  13: poly2tri_rs::sweeper::Sweeper::edge_event
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:724:13
  14: poly2tri_rs::sweeper::Sweeper::sweep_points
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:220:17
  15: poly2tri_rs::sweeper::Sweeper::triangulate_with_observer
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:192:9
  16: poly2tri_rs::sweeper::Sweeper::triangulate
             at /Users/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/poly2tri-rs-0.1.2/src/sweeper.rs:170:9
  17: keyboard_zoo::main
             at ./src/main.rs:18:5
  18: core::ops::function::FnOnce::call_once
             at /rustc/a28077b28a02b92985b3a3faecf92813155f1ea1/library/core/src/ops/function.rs:250:5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions