public void RingTest() { int subdivY = 6; Vector3 point = new Vector3(0, 0, 0); ring = new TreeRing(subdivY, point, Vector3.Cross(point + new Vector3(0, 1, 0), new Vector3(1, 0, 0)));; //these points were determined by instantiating cubes at these points (from this TreeRing calculation //cubes were seen in engine as forming a circle around the origin point Assert.AreEqual(ring.verts[0].x, 0f); Assert.AreEqual(ring.verts[0].y, 0f); Assert.AreEqual(ring.verts[0].z, -1.0f); Assert.LessOrEqual(Mathf.Abs(ring.verts[1].x - (-.9f)), epsilon); Assert.AreEqual(ring.verts[1].y, 0f); Assert.AreEqual(ring.verts[1].z, -.5f); /* * Assert.AreEqual(ring.verts[1], new Vector3(-.9f, 0f, -.5f)); * Assert.AreEqual(ring.verts[2], new Vector3(-.9f, 0f, .5f)); * Assert.AreEqual(ring.verts[0], new Vector3(0f, 0f, 1f)); * Assert.AreEqual(ring.verts[2], new Vector3(.9f, 0f, .5f)); * Assert.AreEqual(ring.verts[1], new Vector3(.9f, 0f, -.5f)); */ // A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use // `yield return null;` to skip a frame. //[UnityTest] //public IEnumerator subDivTest() //{ // //gen.subDivVertGen() // // Use the Assert class to test conditions. // // Use yield to skip a frame. // //yield return null; //} }
/// <summary> /// Treeseg params /// </summary> /// <param name="subDivX"> divisions of curve</param> /// <param name="subDivY"> number of points on rings</param> /// <param name="bezPath"></param> public TreeSeg(int subDivX, int subDivY, Bezier bezPath) { TreeRing[] segment = new TreeRing[subDivX]; float Xincrement = 1f / (float)subDivX; // increments along Segment curve for (int i = 0; i <= subDivX - 1; i++) // POSSIBLE PROBLEM WITH TWISTED FIRST { Vector3 curvePoint = bezPath.Curve(i * Xincrement); Vector3 curvePerpendicularTangent = Vector3.Cross(bezPath.CurveTangentVectorN(i * Xincrement), new Vector3(1, 0, 0)); //Vector3 curvePerpendicularTangent = Quaternion.Euler(90, 0, 0) * bezPath.CurveTanNVec(); //Debug.Log(curvePoint);//find out what value this give me segment[i] = new TreeRing(subDivY, curvePoint, curvePerpendicularTangent); } bezierPath = bezPath; ringVerts = segment; ringsNum = ringVerts.Length; vertsInRing = ringVerts[0].verts.Length; vertsInSeg = ringsNum * vertsInRing; }
private void Awake() { ring = new TreeRing(subdivY, point, Vector3.Cross(point + new Vector3(0, 1, 0), new Vector3(1, 0, 0))); }