Function piston_window::triangulation::stream_quad_tri_list[][src]

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)