public ClusterTestWorld(Camera camera) { Scene = new Scene(camera); Vector[] vectors = new Vector[numVisuals]; Vector2[] bias = new Vector2[4]; bias[0] = 2.0f * new Vector2(Rand(1.0f), Rand(1.0f)); bias[1] = 2.0f * new Vector2(Rand(1.0f), Rand(1.0f)); bias[2] = 2.0f * new Vector2(Rand(1.0f), Rand(1.0f)); bias[3] = 2.0f * new Vector2(Rand(1.0f), Rand(1.0f)); for (int i = 0; i < numVisuals; i++) { int randIndex = (int)Rand(3.999999f); Vector2 pos = new Vector2(Rand(1.0f), Rand(1.0f));// + bias[randIndex]; vectors[i] = new Vector(2); vectors[i][0] = pos.X; vectors[i][1] = pos.Y; } KMeans cluster = new KMeans(vectors, 3, 30); int[] groups = cluster.FindGroups(); for (int i = 0; i < numVisuals; i++) { Color4 color; if (groups[i] == 0) { color = Color4.Blue; } else if (groups[i] == 1) { color = Color4.Green; } else //if (groups[i] == 2) { color = Color4.Red; } //else //( groups[i] == 3 ) { //m = VisualFactory.tranparentColorMat; } Visual visual = VisualFactory.CircleVisual(0.05f, color, VisualFactory.FillMaterial, 0.5f); Visuals.Add(visual); } for (int i = 0; i < numVisuals; i++) { Visuals[i].Transform = new XForm(0, new Vector2(vectors[i][0], vectors[i][1])); } }
public void CycleGraph(int numNodes) { for (int i = 0; i < numNodes; i++) { Graph.AddNode(new Node <NodeData, Visual>(new NodeData(new Vector2(-2 + 4.0f * Rand(1), -2 + 4.0f * Rand(1)), VisualFactory.CircleVisual(0.14f, Color4.Blue, VisualFactory.FillMaterial, 0.5f)))); Graph.Nodes[i].Data.Radius = 0.14f; } for (int i = 0; i < numNodes; i++) { Graph.AddPair(Graph.Nodes[i], Graph.Nodes[(i + 1) % numNodes]); } }
public void CompleteGraph(int numNodes) { for (int i = 0; i < numNodes; i++) { Graph.AddNode(new Node <NodeData, Visual>(new NodeData(new Vector2(-1 + 2.0f * Rand(1), -1 + 2.0f * Rand(1)), VisualFactory.CircleVisual(0.14f, Color4.Black, VisualFactory.FillMaterial, 0.5f)))); Graph.Nodes[i].Data.Radius = 0.14f; } for (int i = 0; i < numNodes; i++) { for (int j = i + 1; j < numNodes; j++) { Graph.AddPair(Graph.Nodes[i], Graph.Nodes[j]); } } }
public TestWorld(Camera camera) { Scene = new Scene(camera); for (int i = 0; i < numVisuals; i++) { Visuals.Add(VisualFactory.RandomVisual()); pos[i] = new Vector2(20.0f - Rand(40), 20.0f - Rand(40)); vel[i] = RandomUnitVector * Rand(3.0f); angle[i] = Rand(2.0f * PI); angleVel[i] = (1.5f + Rand(1.0f)); } for (int i = 0; i < numVisuals; i++) { Visuals[i].WorldBoundingRect = Visuals[i].BoundingRect.Translated(Visuals[i].Transform.d); Scene.Add(Visuals[i]); } }