gabrielflorit / script-8.github.io

A JavaScript-based (React + Redux) fantasy computer for making, sharing, and playing tiny retro-looking games.
https://script-8.github.io/
MIT License
646 stars 35 forks source link

Inconsistent behavior with polyStroke() #314

Open thykka opened 4 years ago

thykka commented 4 years ago

I noticed that polyStroke() has a quirk, where given 2 or 5 arguments, it draws unclosed polygons, i.e.:

polyStroke([
  // empty array as last point
  [0,0], [64, 0], [64, 64], []
], 5)
image

When given 3 arguments however, it doesn't draw anything. I'm guessing this behavior appears because this:

Math.min.apply(
  Math,
  [[0,0], [1,1], []].map(p => p[0])
)

...would return NaN

Since drawing unclosed polylines has plenty of use-cases, perhaps this behaviour should be parametrized, and unified across the different drawing implementations?

gabrielflorit commented 4 years ago

Oh interesting. Very interesting. Would you be able to provide image examples for each quirk?

thykka commented 4 years ago

The 3 argument version simply draws nothing, whereas the 5 argument version behaves like 2.

Test case cassette