From c8ca77ad65e9c0b31c6bd5289de0c1d332c06e63 Mon Sep 17 00:00:00 2001 From: Emile Date: Thu, 7 Mar 2019 16:14:12 +0100 Subject: subdivided the project into multiple logical compartments --- backend/subdivide.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 backend/subdivide.go (limited to 'backend/subdivide.go') diff --git a/backend/subdivide.go b/backend/subdivide.go new file mode 100644 index 0000000..a30fbe4 --- /dev/null +++ b/backend/subdivide.go @@ -0,0 +1,40 @@ +package backend + +import ( + "fmt" + "log" +) + +// subdivide subdivides the given node creating four child nodes +func subdivide(nodeID int64) { + boxWidth := getBoxWidth(nodeID) + boxCenter := getBoxCenter(nodeID) + originalDepth := getNodeDepth(nodeID) + timestep := getTimestepNode(nodeID) + log.Printf("Subdividing %d, setting the timestep to %d", nodeID, timestep) + + // calculate the new positions + newPosX := boxCenter[0] + (boxWidth / 2) + newPosY := boxCenter[1] + (boxWidth / 2) + newNegX := boxCenter[0] - (boxWidth / 2) + newNegY := boxCenter[1] - (boxWidth / 2) + newWidth := boxWidth / 2 + + // create new news with those positions + newNodeIDA := newNode(newPosX, newPosY, newWidth, originalDepth+1, timestep) + newNodeIDB := newNode(newPosX, newNegY, newWidth, originalDepth+1, timestep) + newNodeIDC := newNode(newNegX, newPosY, newWidth, originalDepth+1, timestep) + newNodeIDD := newNode(newNegX, newNegY, newWidth, originalDepth+1, timestep) + + // Update the subtrees of the parent node + + // build the query + query := fmt.Sprintf("UPDATE nodes SET subnode='{%d, %d, %d, %d}', isleaf=FALSE, timestep=%d WHERE node_id=%d", newNodeIDA, newNodeIDB, newNodeIDC, newNodeIDD, timestep, nodeID) + + // Execute the query + rows, err := db.Query(query) + defer rows.Close() + if err != nil { + log.Fatalf("[ E ] subdivide query: %v\n\t\t\t query: %s\n", err, query) + } +} -- cgit 1.4.1