point event pointers

This commit is contained in:
zzzzrrr 2009-07-29 21:24:11 -04:00
parent 012dab34d3
commit 2cf811d635
4 changed files with 42 additions and 9 deletions

View File

@ -91,7 +91,7 @@ class Poly2TriDemo extends BasicGame("Poly2Tri") {
def render(container: GameContainer, g: Graphics) {
g.drawString("'1-5' to cycle models", 10, 540)
g.drawString("'1-6' to cycle models", 10, 540)
g.drawString("'SPACE' to turn on debug info", 10, 552)
g.drawString("'m' to show trapezoidal map (debug mode)", 10, 564)
g.drawString("'e' to switch Seidel / EarClip", 10, 576)

View File

@ -36,10 +36,10 @@ import shapes.{Point, Triangle}
class AFront(iTriangle: Triangle) {
// Doubly linked list
var head = new Node(iTriangle.points(0), iTriangle)
var head = new Node(iTriangle.points(1), iTriangle)
var tail = new Node(iTriangle.points(2), iTriangle)
head.next = new Node(iTriangle.points(1), iTriangle)
head.next = new Node(iTriangle.points(0), iTriangle)
head.next.next = tail
tail.prev = head.next

View File

@ -68,7 +68,7 @@ object CDT {
val segments = initSegments(points)
val sortedPoints = pointSort(points)
val initialTriangle = new Triangle(Array(p1, sortedPoints(0), p2), null)
val initialTriangle = new Triangle(Array(sortedPoints(0), p1, p2), null)
new CDT(sortedPoints, segments, initialTriangle)
}
@ -120,13 +120,45 @@ class CDT(val points: List[Point], val segments: List[Segment], initialTriangle:
for(i <- 1 until points.size) {
val point = points(i)
val triangle = aFront.locate(point)
val (nPoints, nTriangle) = triangle
println(nPoints)
pointEvent(point)
legalization
edgeEvent(point)
}
}
// Point event
private def pointEvent(point: Point) {
// Neightbor points (ccw & cw) and triangle(i)
val (nPts, nTri) = aFront.locate(point)
val pts = Array(point, nPts(0), nPts(1))
val neighbors = Array(nTri, null, null)
val triangle = new Triangle(pts, neighbors)
mesh.map += triangle
// Update neighbor's pointers
if(nPts(0) == nTri.points(1) && nPts(1) == nTri.points(2))
nTri.neighbors(2) = triangle
else if(nPts(0) == nTri.points(2) && nPts(1) == nTri.points(1))
nTri.neighbors(1) = triangle
else
throw new Exception("CDT Error!")
}
private def legalization {
}
private def legalizeEdge {
}
// EdgeEvent
private def edgeEvent(point: Point) {
}
private def finalization {
}

View File

@ -35,7 +35,8 @@ import scala.collection.mutable.HashSet
import shapes.{Point, Triangle}
class Mesh(initialTriangle: Triangle) {
// Triangles that constitute the mesh
val map = HashSet(initialTriangle)
}