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)); }
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; }
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); }
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); }
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); }
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); }
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)); }
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; }
// 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; }