Super helpful, Mark. Thank you.

I can better understand how the existing modes work, but I need something a little different.

Imagine if we had a mode where each successive set of points is rendered so it completely paints over anything rendered before it, vertices and all - e.g.:


   |--->---|
   |.......|
   |...|--->---|
   ^...|.......|
   |...|.......|
   |-- |.......v
       |.......|
       |-------|


  set the fillmode to layered --?

--
 Richard Gaskin
 Fourth World Systems


Mark Waddingham wrote:

On 2021-02-16 05:55, Richard Gaskin via use-livecode wrote:
My expectation was almost beyond anything reasonable, but it would
seem useful if there was some way to make it happen:  imagine if each
segment within a list of discontiguous points was rendered as though
it's a separate object, back to front.

It's not going to kill me to use separate graphics to hide the
portions of the vertices I need covered, but it sure would have been
nifty if I'd found a way to have a single poly object render as though
it were many.

So the even-odd fill rule will not give you what you want - overlapping regions alternate.

The non-zero fill rule can give you what you want - but you need to make sure that all your sub-polygons go 'in the same direction'. (NB: Fixed width font ASCII art follows):

These two overlapping rects both go clock-wise so everything is filled.

   |--->---|
   |.......|
   |...|--->---|
   ^...|...|...|
   |...|...|...|
   |-- |---|...v
       |.......|
       |-------|

The left rect goes anti-clockwise and the right rect goes clockwise:

   |---<---|
   |.......|
   |...|--->---|
   v...|   |...|
   |...|   |...|
   |-- |---|...v
       |.......|
       |-------|

Notionally:
- the non-zero winding rule works by starting on the left of each scanline and scanning to the right
    - there is a winding counter which starts at 0.
- at any pixel, if the winding counter is non-zero the pixel is filled. - if an edge is crossed which goes 'down', the winding counter is decreased - if an edge is crossed which goes 'up', the winding counter is increased

Hope this helps!

Warmest Regards,

Mark.


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to