[−]Function piston_window::triangulation::stream_quad_tri_list
pub fn stream_quad_tri_list<E, F>(m: [[f64; 3]; 2], quad_edge: E, f: F) where
E: FnMut() -> Option<([f64; 2], [f64; 2])>,
F: FnMut(&[[f32; 2]]),
Streams a quad into tri list.
Uses buffers that fit inside L1 cache. The 'quad_edge' stream returns two points defining the next edge.
quad_edge
is a function that returns two vertices, which together comprise
one edge of a quad
f
is a function that consumes the tri list constructed by the output of
quad_edge
, one chunk (buffer) at a time
The tri list is series of buffers (fixed size array) of the format:
// [[x0, y0], [x1, y1], [x2, y2], [x3, y3], ... [y4, y5], ...] // ^--------------------------^ ^--------------------^ // 3 Points of triangle 3 points of second triangle, // ^------------------------------------^ __ // Two triangles together form a single quad |\\ 2| // |1\\ | // |__\\|
Together all the chunks comprise the full tri list. Each time the buffer size is
reached, that chunk is fed to f
, then this function proceeds using a new buffer
until a call to quad_edge
returns None
, indicating there are no more edges left.
(in which case the last partially filled buffer is sent to f
)