microcad_core/geo3d/
vertex.rs1use crate::Vec3;
7
8#[derive(Clone, Copy, Debug)]
10pub struct Vertex {
11 pub pos: Vec3,
13 pub normal: Vec3,
15}
16
17impl Vertex {
18 pub fn accumulate_normal(vertices: &mut [Vertex], i0: u32, i1: u32, i2: u32) {
20 let v0 = vertices[i0 as usize].pos;
21 let v1 = vertices[i1 as usize].pos;
22 let v2 = vertices[i2 as usize].pos;
23
24 let edge1 = v1 - v0;
25 let edge2 = v2 - v0;
26 let face_normal = edge1.cross(edge2);
27
28 vertices[i0 as usize].normal += face_normal;
29 vertices[i1 as usize].normal += face_normal;
30 vertices[i2 as usize].normal += face_normal;
31 }
32}