public void TestTask2_3() { Figure3 figure = new Figure3(4, 6); Square3 square = new Square3(3, 4); Rectangle3 rectangle = new Rectangle3(5, 7); Assert.AreEqual(figure.Draw(), figure.GetType().Name); Assert.AreEqual(square.Draw(), square.GetType().Name); Assert.AreEqual(rectangle.Draw(), rectangle.GetType().Name); }
public void fillingStack() { playerStack[0] = new Figure1(playerNumber); playerStack[1] = new Figure2(playerNumber); playerStack[2] = new Figure3(playerNumber); playerStack[3] = new Figure4(playerNumber); playerStack[4] = new Figure5(playerNumber); playerStack[5] = new Figure6(playerNumber); playerStack[6] = new Figure7(playerNumber); playerStack[7] = new Figure8(playerNumber); playerStack[8] = new Figure9(playerNumber); playerStack[9] = new Figure10(playerNumber); playerStack[10] = new Figure11(playerNumber); playerStack[11] = new Figure12(playerNumber); playerStack[12] = new Figure13(playerNumber); playerStack[13] = new Figure14(playerNumber); playerStack[14] = new Figure15(playerNumber); playerStack[15] = new Figure16(playerNumber); playerStack[16] = new Figure17(playerNumber); playerStack[17] = new Figure18(playerNumber); playerStack[18] = new Figure19(playerNumber); playerStack[19] = new Figure20(playerNumber); playerStack[20] = new Figure21(playerNumber); }
//----------------------------------------------------------------------------- /// <summary> /// Generates tor. /// </summary> /// <returns>Generated tor.</returns> public override Figure3 Generate() { var figure = new Figure3(); #region Structure of tor: points. // Big outer circle. const double doublePi = 2 * Math.PI; for (double angleBig = 0; angleBig < doublePi; angleBig += _angleStep) { // Calculate data only once. var cosAngleBig = Math.Cos(angleBig); var sinAngleBig = Math.Sin(angleBig); // Coordinates of center of little inner circle at plane XY. var centerInnerX = _radiusBig * cosAngleBig; var centerInnerY = _radiusBig * sinAngleBig; // Small inner circle. for (double angleSmall = 0; angleSmall < doublePi; angleSmall += _angleStep) { // Coordinates of point at surface of small little circle in plane of circle. var surfaceInnerX = _radiusSmall * Math.Cos(angleSmall); var surfaceInnerY = _radiusSmall * Math.Sin(angleSmall); // Vector to point of tor surface at XYZ space. var surfaceOuter = new Vector4 { X = _center.X + centerInnerX + surfaceInnerX * cosAngleBig, Y = _center.Y + centerInnerY + surfaceInnerX * sinAngleBig, Z = _center.Z + surfaceInnerY }; figure.Points.Add(surfaceOuter); } } #endregion #region Structure of tor: ribs and faces. // Build ribs and faces. var countPoints = (int)Math.Ceiling(2 * Math.PI / _angleStep); for (var i = 0; i < countPoints; i++) { for (var j = 0; j < countPoints; j++) { // Index of current point. var currentPoint = i * countPoints + j; // Index of point of next inner circle. int rightPoint; if (i == countPoints - 1) // Last circle. rightPoint = j; else rightPoint = (i + 1) * countPoints + j; // In the middle. // Index of next point of current inner circle. int topPoint; if (j == countPoints - 1) // Last point of circle. topPoint = i * countPoints + 1; else topPoint = i * countPoints + j + 1; // In the middle. // Index of next point of next inner circle. int topRightPoint; if ((j == countPoints - 1) && (i == countPoints - 1)) // Last point of last circle. topRightPoint = 1; else if (i == countPoints - 1) // Last circle. topRightPoint = j + 1; else if (j == countPoints - 1) // Last point of circle. topRightPoint = (i + 1) * countPoints; else topRightPoint = (i + 1) * countPoints + j + 1; // In the middle. // Connect points of small inner circle. var circleRib = new Rib3 { First = figure.Points[currentPoint], Second = figure.Points[topPoint] }; figure.Ribs.Add(circleRib); // Connect points of small inner circles. var circlesRib = new Rib3 { First = figure.Points[currentPoint], Second = figure.Points[rightPoint] }; figure.Ribs.Add(circlesRib); var face = new Face3 { First = figure.Points[currentPoint], Second = figure.Points[rightPoint], Third = figure.Points[topRightPoint] }; figure.Faces.Add(face); face = new Face3 { First = figure.Points[currentPoint], Second = figure.Points[topPoint], Third = figure.Points[topRightPoint] }; figure.Faces.Add(face); } // End for j } // End for i #endregion return figure; }