All pastes #1209661 Raw Edit

Sithid

public text v1 · immutable
#1209661 ·published 2008-09-23 20:13 UTC
rendered paste body
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Threading;
using System.Text;
using System.Windows.Forms;

using Sithid.QuadTree;

namespace QuadTreeTest
{
    public partial class QuadTreeTest : Form
    {
        private double CELL_COUNT = 10000; //Math.Pow( 2, m_Random.Next( 1, 20 ) );
        private QuadNode<IQuadObject> m_Tree;
        private static Random m_Random = new Random();

        public QuadTreeTest()
        {
            InitializeComponent();
            Populate();
        }

        private long m_StartMemory = 0;
        private long m_FinishMemory = 0;
        private TimeSpan m_Clock;

        private void Populate()
        {
            m_Tree = new QuadNode<IQuadObject>( new RectangleF( this.Bounds.Left + 5, this.Bounds.Top, 1340, 900 ), null );
            
            PointF loc = new PointF();

            DateTime start = DateTime.Now;

            Thread.MemoryBarrier();

            m_StartMemory = System.GC.GetTotalMemory( true );

            for( int i = 0; i < CELL_COUNT; ++i )
            {
                loc = new PointF( RandomFloat( m_Tree.Bounds.X, m_Tree.Bounds.Width ), RandomFloat( m_Tree.Bounds.Y, m_Tree.Bounds.Height ) );
                QuadPoint tp = new QuadPoint( new RectangleF( loc, new Size( m_Random.Next( 1, 5 ), m_Random.Next( 1, 5 ) ) ), m_Tree, loc );
                m_Tree.Add( tp );
            }

            m_FinishMemory = System.GC.GetTotalMemory( true );

            m_Clock = DateTime.Now - start;

            this.Invalidate();
        }

        private float RandomFloat( double min, double max )
        {
            return (float)( ( max - min ) * m_Random.NextDouble() + min );
        }

        protected override void OnPaint( PaintEventArgs e )
        {
            if( m_Tree != null )
            {
                this.Text = String.Format( "QuadTree_Test: {0} Objects, Created In {1} Minutes, {2}.{3} seconds, Memory Usage: Start: {4}Kb, Finish: {5}Kb, Difference: {6}Kb", m_Tree.TotalObjects, m_Clock.Minutes, m_Clock.Seconds, m_Clock.Milliseconds, m_StartMemory / 1024, m_FinishMemory / 1024, ( m_FinishMemory - m_StartMemory ) / 1024 );
                m_Tree.Draw( e.Graphics, MousePosition, false );
            }

            base.OnPaint( e );
        }
    }
}