예제 #1
0
파일: PlotDrawing.cs 프로젝트: juliavav/CG
        public static List <Point3D> Approximating(double height, double width, double xAxisAngle, double yAxisAngle, double zAxisAngle, double scale)
        {
            List <Point3D> currentPoints = new List <Point3D>(8);
            double         currentY      = Ellipsoid.CountingY(width, 0);

            currentPoints.Add(new Point3D(width, -currentY, 0));
            currentPoints.Add(new Point3D(-width, -currentY, 0));
            currentPoints.Add(new Point3D(-width, currentY, 0));
            currentPoints.Add(new Point3D(width, currentY, 0));

            double currentA = Math.Sqrt(Math.Pow(Ellipsoid.A, 2) * (1 - Math.Pow(height / Ellipsoid.C, 2)));
            double x        = 3.0 / 5 * currentA;
            double y        = Ellipsoid.CountingY(x, height);

            currentPoints.Add(new Point3D(x, -y, height));
            currentPoints.Add(new Point3D(-x, -y, height));
            currentPoints.Add(new Point3D(-x, y, height));
            currentPoints.Add(new Point3D(x, y, height));

            return(Scaling(ZAxisRotating(YAxisRotating(XAxisRotating(currentPoints, xAxisAngle - Constans.LinearPi), yAxisAngle - Constans.LinearPi), zAxisAngle - Constans.LinearPi), scale));
        }