mapbox / mapbox/wagyu

STL assert while doing union for two polys

Open
#45 15 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
197
Forks
37
PR merge metrics
No merged PRs in 30d

Description

I suspect that I'm doing something fundamentally wrong.
VS2015. LLVM-vs2014 toolset has the same effect.

`

#define TYPE std::int64_t
mapbox::geometry::wagyu::wagyu Wagyu;

bool bRes;

//A
mapbox::geometry::linear_ring RingA;

RingA.push_back({ 200986, 661584 });
RingA.push_back({ 100000, 670000 });
RingA.push_back({ 45000, 648310 });
RingA.push_back({ 45715, 125631 });

bRes = Wagyu.add_ring(RingA);

//B
mapbox::geometry::linear_ring RingB;

RingB.push_back({ 45000, 122869 });
RingB.push_back({ 45000, 648310 });
RingB.push_back({ -610000, 390000 });
RingB.push_back({ -650000, 220000 });
RingB.push_back({ -660000, 60000 });
RingB.push_back({ -610000, -320000 });
RingB.push_back({ -409999, -459999 });
RingB.push_back({ -50000, -550000 });
RingB.push_back({ 150000, -550000 });
RingB.push_back({ 470000, -409999 });
RingB.push_back({ 730000, -50000 });
RingB.push_back({ 750000, 80000 });
RingB.push_back({ 350000, 600000 });
RingB.push_back({ 227060, 656741 });
RingB.push_back({ 62080, 110243 });
RingB.push_back({ 45000, 115399 });
RingB.push_back({ 42933, 116023 });

bRes = Wagyu.add_ring(RingB);

//
mapbox::geometry::multi_polygon OutPolys;
bRes = Wagyu.execute(mapbox::geometry::wagyu::clip_type_union, OutPolys, mapbox::geometry::wagyu::fill_type_non_zero, mapbox::geometry::wagyu::fill_type_non_zero);
`

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the provided two-ring union with the VS2015 or LLVM-vs2014 toolset and inspect the STL assertion during Wagyu::execute. Compare the result with the supplied input and determine what behavior is expected; done means the union completes without the assertion and produces a valid output polygon.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.