use grid::{GridCoord, DirIndex, RootIndex};
pub struct Triangle {
pub apex: [GridCoord; 2],
pub x_dir: DirIndex,
pub exits: [Exit; 5],
}
pub struct Exit {
pub triangle_index: usize,
pub root_offset: RootIndex,
}
pub static TRIANGLES: [Triangle; 12] = [
Triangle {
apex: [0, 0],
x_dir: 0,
exits: [
Exit {
triangle_index: 0,
root_offset: 0,
},
Exit {
triangle_index: 0,
root_offset: 1,
},
Exit {
triangle_index: 0,
root_offset: 2,
},
Exit {
triangle_index: 0,
root_offset: 3,
},
Exit {
triangle_index: 0,
root_offset: 4,
},
],
},
Triangle {
apex: [1, 0],
x_dir: 4,
exits: [
Exit {
triangle_index: 1,
root_offset: 0,
},
Exit {
triangle_index: 2,
root_offset: 4,
},
Exit {
triangle_index: 4,
root_offset: 4,
},
Exit {
triangle_index: 6,
root_offset: 4,
},
Exit {
triangle_index: 5,
root_offset: 0,
},
],
},
Triangle {
apex: [0, 1],
x_dir: 8,
exits: [
Exit {
triangle_index: 2,
root_offset: 0,
},
Exit {
triangle_index: 4,
root_offset: 0,
},
Exit {
triangle_index: 6,
root_offset: 0,
},
Exit {
triangle_index: 5,
root_offset: 1,
},
Exit {
triangle_index: 1,
root_offset: 1,
},
],
},
Triangle {
apex: [1, 1],
x_dir: 6,
exits: [
Exit {
triangle_index: 3,
root_offset: 0,
},
Exit {
triangle_index: 8,
root_offset: 4,
},
Exit {
triangle_index: 10,
root_offset: 4,
},
Exit {
triangle_index: 11,
root_offset: 0,
},
Exit {
triangle_index: 7,
root_offset: 0,
},
],
},
Triangle {
apex: [0, 1],
x_dir: 10,
exits: [
Exit {
triangle_index: 4,
root_offset: 0,
},
Exit {
triangle_index: 6,
root_offset: 0,
},
Exit {
triangle_index: 5,
root_offset: 1,
},
Exit {
triangle_index: 1,
root_offset: 1,
},
Exit {
triangle_index: 2,
root_offset: 0,
},
],
},
Triangle {
apex: [1, 0],
x_dir: 2,
exits: [
Exit {
triangle_index: 5,
root_offset: 0,
},
Exit {
triangle_index: 1,
root_offset: 0,
},
Exit {
triangle_index: 2,
root_offset: 4,
},
Exit {
triangle_index: 4,
root_offset: 4,
},
Exit {
triangle_index: 6,
root_offset: 4,
},
],
},
Triangle {
apex: [0, 1],
x_dir: 0,
exits: [
Exit {
triangle_index: 6,
root_offset: 0,
},
Exit {
triangle_index: 5,
root_offset: 1,
},
Exit {
triangle_index: 1,
root_offset: 1,
},
Exit {
triangle_index: 2,
root_offset: 0,
},
Exit {
triangle_index: 4,
root_offset: 0,
},
],
},
Triangle {
apex: [1, 1],
x_dir: 4,
exits: [
Exit {
triangle_index: 7,
root_offset: 0,
},
Exit {
triangle_index: 3,
root_offset: 0,
},
Exit {
triangle_index: 8,
root_offset: 4,
},
Exit {
triangle_index: 10,
root_offset: 4,
},
Exit {
triangle_index: 11,
root_offset: 0,
},
],
},
Triangle {
apex: [0, 2],
x_dir: 8,
exits: [
Exit {
triangle_index: 8,
root_offset: 0,
},
Exit {
triangle_index: 10,
root_offset: 0,
},
Exit {
triangle_index: 11,
root_offset: 1,
},
Exit {
triangle_index: 7,
root_offset: 1,
},
Exit {
triangle_index: 3,
root_offset: 1,
},
],
},
Triangle {
apex: [1, 2],
x_dir: 6,
exits: [
Exit {
triangle_index: 9,
root_offset: 0,
},
Exit {
triangle_index: 9,
root_offset: 4,
},
Exit {
triangle_index: 9,
root_offset: 3,
},
Exit {
triangle_index: 9,
root_offset: 2,
},
Exit {
triangle_index: 9,
root_offset: 1,
},
],
},
Triangle {
apex: [0, 2],
x_dir: 10,
exits: [
Exit {
triangle_index: 10,
root_offset: 0,
},
Exit {
triangle_index: 11,
root_offset: 1,
},
Exit {
triangle_index: 7,
root_offset: 1,
},
Exit {
triangle_index: 3,
root_offset: 1,
},
Exit {
triangle_index: 8,
root_offset: 0,
},
],
},
Triangle {
apex: [1, 1],
x_dir: 2,
exits: [
Exit {
triangle_index: 11,
root_offset: 0,
},
Exit {
triangle_index: 7,
root_offset: 0,
},
Exit {
triangle_index: 3,
root_offset: 0,
},
Exit {
triangle_index: 8,
root_offset: 4,
},
Exit {
triangle_index: 10,
root_offset: 4,
},
],
},
];