jeffeb3 / sandify

web based user interface to create patterns that could be useful for robots that draw in sand with ball bearings.
MIT License
187 stars 34 forks source link

cap max segments #293

Closed bobnik closed 2 months ago

bobnik commented 2 months ago

Fixes #283.

In the 90 degree case, the wiper algorithm adds a point which is way outside of the bounds of the machine (e.g, x: 8000000000, y: 0). If an effect is added that calls subsample to break up long lines, this particular case results in an extremely high number of additional points being added, which overwhelms the browser.

I was unable to figure out how to modify this algorithm to sensibly clip the line. Instead, I modified subsample to cap the number of segments into which any given line can be divided. This seems to work well, and does not noticeably change the visible pattern. Please scrutinize.