public static void PolynomialList() { //左边是系数,右边是次幂 // string[] leftPolys = {"2,1492","10,1000","5,14","5,1","1,0"}; // string[] rightPolys = {"3,1990","-2,1492","11,1","5,0"}; string[] leftPolys = { "2,1492", "10,1000", "5,14", "5,1", "1,0" }; string[] rightPolys = { "3,1990", "-2,1492", "11,1", "5,0" }; PolyList left = new PolyList(); PolyList right = new PolyList(); foreach (var poly in leftPolys) { string[] param = poly.Split(','); int coefficient = int.Parse(param[0]); int exponent = int.Parse(param[1]); PolyNode node = new PolyNode(); node.Polynomial.Coefficient = coefficient; node.Polynomial.Exponent = exponent; left.Append(node); } foreach (var poly in rightPolys) { string[] param = poly.Split(','); int coefficient = int.Parse(param[0]); int exponent = int.Parse(param[1]); PolyNode node = new PolyNode(); node.Polynomial.Coefficient = coefficient; node.Polynomial.Exponent = exponent; right.Append(node); } PolyList sum = left + right; sum.PrintList(); System.Console.WriteLine("multiply:"); PolyList multi = left * right; multi.PrintList(); }
private int[] buildIndices(PolyList polys, out bool isTriangles) { int quadCount = 0; int triCount = 0; for (int i = 0; i < polys.count; i++) { if (polys.values[i].Count == 5) { triCount++; } if (polys.values[i].Count == 6) { quadCount++; } } Debug.Log(quadCount + " quads, and " + triCount + " triangles."); int[] indices; if (quadCount == polys.count) { indices = new int[quadCount * 4]; for (int i = 0; i < polys.count; i++) { indices[i * 4 + 0] = polys.values[i][2]; indices[i * 4 + 1] = polys.values[i][3]; indices[i * 4 + 2] = polys.values[i][4]; indices[i * 4 + 3] = polys.values[i][5]; } } else if (triCount == polys.count) { indices = new int[triCount * 3]; for (int i = 0; i < polys.count; i++) { indices[i * 4 + 0] = polys.values[i][2]; indices[i * 4 + 1] = polys.values[i][3]; indices[i * 4 + 2] = polys.values[i][4]; } } else { int baseCount = quadCount * 6 + triCount * 3; int currentIndex = 0; indices = new int[baseCount]; for (int i = 0; i < polys.count; i++) { if (polys.values[i].Count == 5) { indices[currentIndex++] = polys.values[i][2]; indices[currentIndex++] = polys.values[i][3]; indices[currentIndex++] = polys.values[i][4]; } else { indices[currentIndex++] = polys.values[i][2]; indices[currentIndex++] = polys.values[i][3]; indices[currentIndex++] = polys.values[i][5]; indices[currentIndex++] = polys.values[i][5]; indices[currentIndex++] = polys.values[i][3]; indices[currentIndex++] = polys.values[i][4]; } } } isTriangles = triCount != 0; return(indices); }