| 73 | } |
| 74 | |
| 75 | static void Subdivide(u8 depth, f32 v0[3], f32 v1[3], f32 v2[3]) |
| 76 | { |
| 77 | f32 v01[3]; |
| 78 | f32 v12[3]; |
| 79 | f32 v20[3]; |
| 80 | u32 i; |
| 81 | |
| 82 | if (depth == 0) |
| 83 | { |
| 84 | DumpTriangle(v0, v1, v2); |
| 85 | return; |
| 86 | } |
| 87 | |
| 88 | for (i = 0; i < 3; i++) |
| 89 | { |
| 90 | v01[i] = v0[i] + v1[i]; |
| 91 | v12[i] = v1[i] + v2[i]; |
| 92 | v20[i] = v2[i] + v0[i]; |
| 93 | } |
| 94 | |
| 95 | normalize(v01); |
| 96 | normalize(v12); |
| 97 | normalize(v20); |
| 98 | Subdivide(depth - 1, v0, v01, v20); |
| 99 | Subdivide(depth - 1, v1, v12, v01); |
| 100 | Subdivide(depth - 1, v2, v20, v12); |
| 101 | Subdivide(depth - 1, v01, v12, v20); |
| 102 | } |
| 103 | |
| 104 | static void SubDivTriangle(u8 depth, u8 i, f32 (*data)[3], u8 (*ndx)[3]) |
| 105 | { |
no test coverage detected