mirror of
https://github.com/jhasse/poly2tri.git
synced 2024-11-30 01:03:30 +01:00
bug fixes
This commit is contained in:
parent
f4bacf8cf6
commit
709d8b17ca
@ -84,7 +84,7 @@ class Poly2TriDemo extends BasicGame("Poly2Tri") {
|
||||
val strange = "data/strange.dat"
|
||||
val i18 = "data/i.18"
|
||||
|
||||
var currentModel = nazcaMonkey
|
||||
var currentModel = star
|
||||
|
||||
var mouseButton = 0
|
||||
var mousePressed = false
|
||||
|
@ -108,6 +108,7 @@ class CDT(val points: List[Point], val segments: List[Segment], iTriangle: Trian
|
||||
|
||||
// Triangle list
|
||||
def triangles = mesh.map
|
||||
def triangleMesh = mesh.map
|
||||
def debugTriangles = mesh.debug
|
||||
|
||||
// The triangle mesh
|
||||
@ -139,7 +140,7 @@ class CDT(val points: List[Point], val segments: List[Segment], iTriangle: Trian
|
||||
}
|
||||
// Process edge events
|
||||
point.edges.foreach(e => edgeEvent(e, triangle))
|
||||
//if(i == 10) {cTri = triangle; mesh.debug += cTri}
|
||||
//if(i == 5) {cTri = triangle; mesh.debug += cTri}
|
||||
}
|
||||
//mesh clean cTri
|
||||
}
|
||||
@ -424,7 +425,7 @@ class CDT(val points: List[Point], val segments: List[Segment], iTriangle: Trian
|
||||
val c2 = Util.collinear(t2.points(0), t2.points(1), oPoint)
|
||||
val c3 = Util.collinear(t2.points(1), t2.points(2), oPoint)
|
||||
val c4 = Util.collinear(t2.points(0), t2.points(2), oPoint)
|
||||
val collinear = !(c1 && c2 && c3 && c4)
|
||||
val collinear = (c1 || c2 || c3 || c4)
|
||||
|
||||
if(illegal(t1.points(1), oPoint, t1.points(2), t1.points(0)) && !collinear) {
|
||||
|
||||
@ -433,8 +434,8 @@ class CDT(val points: List[Point], val segments: List[Segment], iTriangle: Trian
|
||||
val ccwNeighbor = t2.neighborCCW(oPoint)
|
||||
|
||||
if(ccwNeighbor != null) {
|
||||
//val point = if(t1.points(0).x > oPoint.x) t1.points(1) else t1.points(2)
|
||||
ccwNeighbor.updateNeighbors(oPoint, t1.points(2), t1, mesh.debug)
|
||||
val point = if(t1.points(0).x > oPoint.x) t1.points(1) else t1.points(2)
|
||||
ccwNeighbor.updateNeighbors(oPoint, point, t1, mesh.debug)
|
||||
t1.neighbors(1) = ccwNeighbor
|
||||
}
|
||||
|
||||
|
@ -46,13 +46,13 @@ class Mesh(initialTriangle: Triangle) {
|
||||
def clean(triangle: Triangle) {
|
||||
if(triangle != null && triangle.clean == false) {
|
||||
triangle.clean = true
|
||||
triangles += triangle
|
||||
if(triangle.edges(0) == false)
|
||||
clean(triangle.neighbors(0))
|
||||
if(triangle.edges(1) == false)
|
||||
clean(triangle.neighbors(1))
|
||||
if(triangle.edges(2) == false)
|
||||
clean(triangle.neighbors(2))
|
||||
triangles += triangle
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,6 +54,7 @@ class Triangle(val points: Array[Point], val neighbors: Array[Triangle]) {
|
||||
neighbors(2) = triangle
|
||||
else {
|
||||
debug += triangle
|
||||
debug += this
|
||||
throw new Exception("Neighbor pointer error, please report!")
|
||||
}
|
||||
}
|
||||
|
@ -51,11 +51,10 @@ object Util {
|
||||
// Determinant
|
||||
val d = a11*(a22-a32) - a12*(a21-a31) + (a21*a32-a31*a22)
|
||||
|
||||
if(Math.abs(d) <= COLLINEAR_SLOP) {
|
||||
if(Math.abs(d) <= COLLINEAR_SLOP)
|
||||
true
|
||||
} else {
|
||||
else
|
||||
false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user