コード例 #1
0
        public void QuadTreeQuad2DQueryTest()
        {
            var tree = new QuadTreeQuad2D(4, 10);

            var q1 = new Quad2D(new Point2D(1, 1), 2);
            var q2 = new Quad2D(new Point2D(10, 10), 2, 45);

            tree.AddItem(q1);

            var items = tree.GetItemsWithinRadius(q1, 0).ToList();

            Assert.AreEqual(1, items.Count);
            Assert.AreEqual(true, items.Contains(q1));

            tree.AddItem(q2);

            items = tree.GetItemsWithinRadius(q1, 10).ToList();
            Assert.AreEqual(2, items.Count);
            Assert.AreEqual(true, items.Contains(q1));
            Assert.AreEqual(true, items.Contains(q2));

            items = tree.GetItemsWithinRadius(q1, 0).ToList();
            Assert.AreEqual(1, items.Count);
            Assert.AreEqual(true, items.Contains(q1));
            Assert.AreEqual(false, items.Contains(q2));
        }
コード例 #2
0
ファイル: Quad3D.cs プロジェクト: benlewis/unhinged_vr
	public Quad3D Create(Quad2D quad, float zOrigin){
		Quad3D q = new Quad3D();
		q.a = new TVector3(quad.a.Value.x, quad.a.Value.y, zOrigin, quad.a.Tag);
		q.b = new TVector3(quad.b.Value.x, quad.b.Value.y, zOrigin, quad.b.Tag);
		q.c = new TVector3(quad.c.Value.x, quad.c.Value.y, zOrigin, quad.c.Tag);
		q.d = new TVector3(quad.d.Value.x, quad.d.Value.y, zOrigin, quad.d.Tag);
		
		return q;
	}
コード例 #3
0
    public Quad3D Create(Quad2D quad, float zOrigin)
    {
        Quad3D q = new Quad3D();

        q.a = new TVector3(quad.a.Value.x, quad.a.Value.y, zOrigin, quad.a.Tag);
        q.b = new TVector3(quad.b.Value.x, quad.b.Value.y, zOrigin, quad.b.Tag);
        q.c = new TVector3(quad.c.Value.x, quad.c.Value.y, zOrigin, quad.c.Tag);
        q.d = new TVector3(quad.d.Value.x, quad.d.Value.y, zOrigin, quad.d.Tag);

        return(q);
    }
コード例 #4
0
        public void Quad2DBoundaryTest()
        {
            var center   = new Point2D(0, 0);
            var quad     = new Quad2D(center, 2);
            var boundary = quad.Boundary;

            Assert.AreEqual(new Point2D(-1, -1), boundary.Min);
            Assert.AreEqual(new Point2D(1, 1), boundary.Max);

            quad     = new Quad2D(center, 2, 45);
            boundary = quad.Boundary;

            var sqrt2 = (float)Math.Sqrt(2);

            Assert.AreEqual(new Point2D(-sqrt2, -sqrt2), boundary.Min);
            Assert.AreEqual(new Point2D(sqrt2, sqrt2), boundary.Max);
        }
コード例 #5
0
        public void Quad2DCreationTest()
        {
            var center      = new Point2D(0, 0);
            var topRight    = new Point2D(1, 1);
            var topLeft     = new Point2D(-1, 1);
            var bottomRight = new Point2D(1, -1);
            var bottomLeft  = new Point2D(-1, -1);

            var quad = new Quad2D(center, 2);

            Assert.AreEqual(center, quad.Center);
            Assert.AreEqual(0, quad.Rotation);
            Assert.AreEqual(topRight, quad.TopRight);
            Assert.AreEqual(topLeft, quad.TopLeft);
            Assert.AreEqual(bottomRight, quad.BottomRight);
            Assert.AreEqual(bottomLeft, quad.BottomLeft);
        }
コード例 #6
0
        public void Quad2DRotationTest()
        {
            var sqrt2       = (float)Math.Sqrt(2);
            var center      = new Point2D(0, 0);
            var topRight    = new Point2D(0, sqrt2);
            var topLeft     = new Point2D(-sqrt2, 0);
            var bottomRight = new Point2D(sqrt2, 0);
            var bottomLeft  = new Point2D(0, -sqrt2);

            var quad = new Quad2D(center, 2, 45);

            Assert.AreEqual(center, quad.Center);
            Assert.AreEqual(45, quad.Rotation);
            Assert.AreEqual(topRight, quad.TopRight);
            Assert.AreEqual(topLeft, quad.TopLeft);
            Assert.AreEqual(bottomRight, quad.BottomRight);
            Assert.AreEqual(bottomLeft, quad.BottomLeft);
        }
コード例 #7
0
        public void QuadTreeQuad2DCreationTest()
        {
            var tree = new QuadTreeQuad2D(4, 10);

            var q1 = new Quad2D(new Point2D(1, 1), 2);

            tree.AddItem(q1);

            Assert.AreEqual(1, tree.ItemCount);
            Assert.AreEqual(1, tree.SectionCount);
            Assert.AreEqual(true, tree.HasItem(q1));

            var q2 = new Quad2D(new Point2D(10, 10), 2, 45);

            tree.AddItem(q2);

            Assert.AreEqual(2, tree.ItemCount);
            Assert.AreEqual(9, tree.SectionCount);
            Assert.AreEqual(true, tree.Items.Contains(q2));
            Assert.AreEqual(true, tree.HasItem(q1));
            Assert.AreEqual(true, tree.HasItem(q2));
        }
コード例 #8
0
ファイル: GearRenderer.cs プロジェクト: benlewis/unhinged_vr
	private Quad2D CreateQuadFromLineSegment (LineSegment2D ls, float TailLen, float HeadLen)
	{	
		float pitch = ls.Pitch ();
		Quad2D ret = new Quad2D ();

		
		float theta = pitch;
		ret.a = new TVector2(TailLen * Mathf.Sin(theta) + ls.a.Value.x, -TailLen * Mathf.Cos(theta) + ls.a.Value.y, ls.a.Tag);
		ret.d = new TVector2(-TailLen * Mathf.Sin(theta) + ls.a.Value.x, TailLen * Mathf.Cos(theta) + ls.a.Value.y, ls.a.Tag);
		
		ret.b = new TVector2(HeadLen * Mathf.Sin(theta) + ls.b.Value.x, -HeadLen * Mathf.Cos(theta) + ls.b.Value.y, ls.b.Tag);
		ret.c = new TVector2(-HeadLen * Mathf.Sin(theta) + ls.b.Value.x, HeadLen * Mathf.Cos(theta) + ls.b.Value.y, ls.b.Tag);


		return ret;
	}
コード例 #9
0
ファイル: Pole00.cs プロジェクト: nobutora/pichan
    // Use this for initialization
    void Start()
    {
        sprite = (Quad2D)GetComponent(typeof(Quad2D));

        Vector3 vPos = transform.localPosition;

        //! 初回のX座標は固定
        vPos.x = GameManager.ScreenSize.x + 50.0f;

        vPos.z = 0;
        if(type == TYPE_HOMING)
        {
            if( PlayerManager.Instance != null )
            {
                float y = PlayerManager.Instance.GetPlayerY();
                vPos.y = y + Random.Range( -60.0f, 60.0f );
            }
        }

        //if(type >= GameManager.Instance.GameLevel)
        //{
        //	if( Random.Range( 0 , 5) == 0)
        //	{
        //		type = TYPE_HOMING_NEO;
        //	}
        //}

        transform.localPosition = vPos;
        transform.localScale = Vector3.one;

        transform.localScale = new Vector3( 1.0f, 1.0f, 1.0f );

        //! 行動フロー
        mAcc = 0;
    }