private void ExpandAxes() { int q = BaseAxes.Length; PAxis[] CAxes = new PAxis[MaxNAxes]; for (int i = 0; i < q; i++) { PBaseAxis ax = BaseAxes[i]; ax.Id = i; ax.ExpandPrimaryTwists(); CAxes[i] = new PAxis(ax); // matrix=id } for (int p = 0; p < q; p++) { double[] R = CAxes[p].Dir; foreach (double [] G in Group) { double[] v = PGeom.ApplyTwist(G, R); int j; bool qr; for (j = 0; j < q; j++) { if (PGeom.AxisEqual(v, CAxes[j].Dir, out qr)) { break; } } if (j == q) { if (q == MaxNAxes) { throw new Exception("Too many axes"); } CAxes[q] = new PAxis(CAxes[p], G); q++; } } } Axes = new PAxis[q]; for (int i = 0; i < q; i++) { Axes[i] = CAxes[i]; Axes[i].Id = i; } }