diff options
-rw-r--r-- | Dockerfile | 14 | ||||
-rw-r--r-- | README.md | 6 | ||||
-rw-r--r-- | docker-compose.yml | 7 | ||||
-rw-r--r-- | main.go | 53 |
4 files changed, 79 insertions, 1 deletions
diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9cfbfba --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:latest + +# Setup the work directory +WORKDIR /home + +# Copy the files to WORKDIR +COPY main.go /home/main.go + +# Install the used go packages +RUN ["go", "get", "git.darknebu.la/GalaxySimulator/structs"] +RUN ["go", "get", "github.com/gorilla/mux"] + +# Start the webserver +ENTRYPOINT ["go", "run", "/home/main.go"] diff --git a/README.md b/README.md index bcdf634..1e84758 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # simulator-container -Docker-container simulating the new position of a given set of stars. \ No newline at end of file +Docker-container simulating the new position of a given set of stars. + +## Purpose + +This containers purpose is to get a star and return the position of the star after a given time delta. \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f0c08d8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +version: '3' + +services: + simulate: + build: . + ports: + - "8345:8345" \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 0000000..c33a669 --- /dev/null +++ b/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "strconv" + + "github.com/gorilla/mux" + + "git.darknebu.la/GalaxySimulator/structs" +) + +func nextpos(deltat float64, star structs.Star2D) { + // ... +} + +func initMassCenter(w http.ResponseWriter, r *http.Request) { + log.Println("[ ] Initializing the Mass Center of all the nodes in the tree") + + // getting the tree index + vars := mux.Vars(r) + treeindex, _ := strconv.ParseInt(vars["treeindex"], 10, 0) + _, _ = fmt.Fprintln(w, treeindex) + + // Recursively calculate the center of mass of a node by calculating the center of mass of the four children of + // that node. + // The formula used is the following: + // ( (x_i * m_i)/(m_total) , (y_i * m_i)/(m_total) ) + + // starting at the root node of the tree + +} + +func calcNewPos(w http.ResponseWriter, r *http.Request) { + // get the post parameters + x, _ := strconv.ParseFloat(r.PostFormValue("x"), 64) + y, _ := strconv.ParseFloat(r.PostFormValue("y"), 64) + z, _ := strconv.ParseFloat(r.PostFormValue("z"), 64) + + log.Printf("(%f, %f, %f)", x, y, z) +} + +func main() { + router := mux.NewRouter() + + router.HandleFunc("/initMassCenter", calcNewPos).Methods("POST") + + // this is an endpoint searching for a star and calculating the forces acting inbetween it and all the other star + // in it's direct range + router.HandleFunc("/newpos", calcNewPos).Methods("POST") + log.Fatal(http.ListenAndServe(":8345", router)) +} |