Ejemplo n.º 1
0
 private void Draw()
 {
     graphics.Clear(Color.Black);
     quadtree = new Quadtree(new Rectangle(winWidth / 2,
                                           winHeight / 2,
                                           winHeight / 2,
                                           winWidth / 2),
                             4, graphics);
     foreach (var particle in particles)
     {
         quadtree.InsertParticle(particle);
         graphics.FillRectangle(Brushes.White, particle.position.X, particle.position.Y, 2f, 2f);
     }
     quadtree.Draw();
     pictureBox1.Refresh();
 }
Ejemplo n.º 2
0
        public void InsertParticle(Particle p)
        {
            if (!boundary.ContainsPoint(new Point((int)p.position.X, (int)p.position.Y)))
            {
                return;
            }

            if (points.Count < capacity)
            {
                points.Add(p);
            }
            else
            {
                if (!divided)
                {
                    Subdivide();
                    divided = true;
                }
                QTne.InsertParticle(p);
                QTnw.InsertParticle(p);
                QTse.InsertParticle(p);
                QTsw.InsertParticle(p);
            }
        }