Git Product home page Git Product logo

Comments (9)

OliverColeman avatar OliverColeman commented on July 30, 2024 1

@alexbol99 Any chance of getting PR #56 merged? I'm currently using that branch on a webserver to avoid this bug crashing the webserver...

@jovankrajevski In case it's useful: you can use the branch for PR #56 from npm with npm i OliverColeman/flatten-js#preventinfiniteloop. Then you can catch the exception thrown when an infinite loops seems to be occurring and handle it gracefully.

from flatten-js.

alexbol99 avatar alexbol99 commented on July 30, 2024

Still working on it

from flatten-js.

jovankrajevski avatar jovankrajevski commented on July 30, 2024

Do you have any suggestions on which types of polygons we should be avoiding so that we can avoid the infinite looping while you are working on this issue?

from flatten-js.

jovankrajevski avatar jovankrajevski commented on July 30, 2024

I would prefer to see PR #56 merged tbh. imo it is better to have an error thrown, so that we could fall back on some other heuristic, than have the browser/server looping forever.

from flatten-js.

alexbol99 avatar alexbol99 commented on July 30, 2024

I would not fix it in this way. The reason of infinite loop is illegal merge of two polygon caused by numeric errors. I know how to prevent it in the way that it throw error before it comes to infinite loop. It just takes me some time to implement. Sorry for delay.

from flatten-js.

alexbol99 avatar alexbol99 commented on July 30, 2024

@jovankrajevski

Do you have any suggestions on which types of polygons we should be avoiding so that we can avoid the infinite looping while you are working on this issue?

Operation is stable when polygon has no almost zero length edges. Intersection between two edges when one of them is big and other has length closed to zero is numerically unstable. Try to filter your polygons from tiny edges that have no meaning, and the result will be fine.

from flatten-js.

jovankrajevski avatar jovankrajevski commented on July 30, 2024

@alexbol99 thanks. I actually solved my problem by just casting the coordinates to ints, but I will make sure that I do not have edges with length < 1. I am not sure if you are aware that this bug happens sometimes with floating point coordinates, and not just with edges that are really small, so I just wanted to point that out.

from flatten-js.

alexbol99 avatar alexbol99 commented on July 30, 2024

@jovankrajevski , @OliverColeman
Ok, I added infinite loop detection using infamous "turtle and rabbit" algorithm.
It throws an "Infinite loop" error if additional loop detected in the chain of edges supposed to form face.
Fix available in the version v1.2.11.
Best,
Alex

from flatten-js.

OliverColeman avatar OliverColeman commented on July 30, 2024

Awesome, thanks for this :). I am wondering if it would be even better to put that code into CircularLinkedList.js rather than face.js? At the moment face.js is the only code that uses CircularLinkedList, but if in the future some other code uses it and causes an infinite loop, it would still be caught.

from flatten-js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.