whispervis/objects.go

48 lines
985 B
Go
Raw Normal View History

2018-09-05 16:53:09 +03:00
package main
import (
"github.com/lngramos/three"
)
func (p *Page) CreateObjects() {
2018-09-05 17:09:56 +03:00
p.graph = three.NewGroup()
p.scene.Add(p.graph)
2018-09-05 16:53:09 +03:00
2018-09-05 17:09:56 +03:00
p.nodes = three.NewGroup()
p.graph.Add(p.nodes)
2018-09-05 16:53:09 +03:00
2018-09-05 17:09:56 +03:00
p.edges = three.NewGroup()
p.graph.Add(p.edges)
2018-09-05 16:53:09 +03:00
2018-09-05 17:09:56 +03:00
p.createNodes()
p.createEdges()
}
func (p *Page) createNodes() {
scale := 2.0
geometry := NewEthereumGeometry(scale)
material := NewNodeMaterial()
2018-09-05 16:53:09 +03:00
for _, node := range p.layout.Positions() {
mesh := three.NewMesh(geometry, material)
mesh.Position.Set(node.X, node.Y, node.Z)
2018-09-05 17:09:56 +03:00
p.nodes.Add(mesh)
2018-09-05 16:53:09 +03:00
}
2018-09-05 17:09:56 +03:00
}
2018-09-05 16:53:09 +03:00
2018-09-05 17:09:56 +03:00
func (p *Page) createEdges() {
material := NewEdgeMatherial()
2018-09-05 16:53:09 +03:00
for _, link := range p.layout.Links() {
from := link.From()
to := link.To()
start := p.layout.Positions()[from]
end := p.layout.Positions()[to]
var geom = three.NewBasicGeometry(three.BasicGeometryParams{})
geom.AddVertice(start.X, start.Y, start.Z)
geom.AddVertice(end.X, end.Y, end.Z)
2018-09-05 17:09:56 +03:00
line := three.NewLine(geom, material)
p.edges.Add(line)
2018-09-05 16:53:09 +03:00
}
}