Bring MarchingSquares.Variants over from the other branch -- it needs cleanup
This commit is contained in:
parent
eb55566a13
commit
7ab620cee8
1 changed files with 131 additions and 0 deletions
|
@ -205,3 +205,134 @@ class MarchingSquares {
|
||||||
encoder.endEncoding()
|
encoder.endEncoding()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Variants {
|
||||||
|
static let geometry: [Float] = [
|
||||||
|
// 0: no triangles
|
||||||
|
// 1: lower left corner, 1 triangle
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
// 2: lower right corner, 1 triangle
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
// 3: bottom half, 2 triangles
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
// 4: top right corner, 1 triangle
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
// 5: top right and bottom left, 4 triangles
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
// 6: right half, 2 triangles
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
// 7: bottom right corner 7/8ths, 3 triangles
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
// 8: top left corner, 1 triangle
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
// 9: left half, 2 triangles
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
// 10: top left and bottom right, 4 triangles
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
// 11: bottom left corner 7/8th, 3 triangles
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
// 12: top half, 2 triangles
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
// 13: top left corner 7/8ths, 3 triangles
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
1.0, 0.0, 0.0,
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
// 14: top right corner 7/8th, 3 triangles
|
||||||
|
-1.0, 0.0, 0.0,
|
||||||
|
0.0, -1.0, 0.0,
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
// 15: full, 2 triangles
|
||||||
|
-1.0, -1.0, 0.0,
|
||||||
|
1.0, -1.0, 0.0,
|
||||||
|
-1.0, 1.0, 0.0,
|
||||||
|
1.0, 1.0, 0.0,
|
||||||
|
]
|
||||||
|
|
||||||
|
static func numberOfTriangles(for variation: UInt) -> UInt {
|
||||||
|
switch variation {
|
||||||
|
case 0: return 0
|
||||||
|
case 1: return 1
|
||||||
|
case 2: return 1
|
||||||
|
case 3: return 2
|
||||||
|
case 4: return 1
|
||||||
|
case 5: return 4
|
||||||
|
case 6: return 2
|
||||||
|
case 7: return 3
|
||||||
|
case 8: return 1
|
||||||
|
case 9: return 2
|
||||||
|
case 10: return 4
|
||||||
|
case 11: return 3
|
||||||
|
case 12: return 2
|
||||||
|
case 13: return 3
|
||||||
|
case 14: return 3
|
||||||
|
case 15: return 2
|
||||||
|
default: return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static func startingIndex(for variation: UInt) -> UInt {
|
||||||
|
switch variation {
|
||||||
|
case 0: return 0
|
||||||
|
case 1: return 0
|
||||||
|
case 2: return 3
|
||||||
|
case 3: return 6
|
||||||
|
case 4: return 10
|
||||||
|
case 5: return 13
|
||||||
|
case 6: return 19
|
||||||
|
case 7: return 23
|
||||||
|
case 8: return 28
|
||||||
|
case 9: return 31
|
||||||
|
case 10: return 35
|
||||||
|
case 11: return 41
|
||||||
|
case 12: return 46
|
||||||
|
case 13: return 50
|
||||||
|
case 14: return 55
|
||||||
|
case 15: return 60
|
||||||
|
default: return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var buffer: MTLBuffer?
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue