/// <summary>
        /// моделируем планету
        /// </summary>
        /// <param name="pic">текстура</param>
        /// <param name="speed">скорость</param>
        /// <param name="remoteness">удаленность</param>
        /// <param name="radius">радиус</param>
        /// <param name="position">горизонально ровная позиция орбит планет</param>
        /// <param name="nx"></param>
        /// <param name="ny"></param>
        public CoordsPositions DrawPlanet(Bitmap pic, double speed, double rotateSpeed, double remoteness = 1.5, double radius = 0.2, double position = 238, int nx = 20, int ny = 20)
        {
            GLTexture.LoadTexture(pic);
            GL.Enable(EnableCap.Texture2D);
            GL.Enable(EnableCap.Light0); //освещение объектов
            GL.PushMatrix();
            if (!viewFromAbove)
            {
                GL.Rotate(position, 1.0, 1.0, 1.0);
            }
            CoordsPositions coord = Sphere(radius, nx, ny, Math.Sin(speed) * remoteness, Math.Cos(speed) * remoteness, 0, rotateSpeed, true);

            GL.Begin(PrimitiveType.LineLoop);
            //GL.Vertex2(0.0f, 0.0f); //начальная позиция
            //Рисуем орбиту планеты вокруг солнца
            if (orbits)
            {
                float a = 0f;
                for (int i = 0; i <= 50; i++)
                {
                    a = (float)i / 50.0f * 3.1415f * 2.0f;
                    GL.Vertex2(Math.Sin(a) * remoteness, Math.Cos(a) * remoteness);
                }
            }
            GL.End();
            GL.PopMatrix();
            GL.Disable(EnableCap.Light0);
            GL.Disable(EnableCap.Texture2D);
            return(coord);
        }
        /// <summary>
        /// Отрисовка сферы
        /// </summary>
        /// <param name="r">радиус</param>
        /// <param name="nx">Количество граней по горизонтали</param>
        /// <param name="ny">Количество граней по вертикали</param>
        /// <param name="sx">положение по координате X</param>
        /// <param name="sy">положение по координате Y</param>
        /// <param name="sz">положение по координате Z</param>
        /// <param name="speed">Скорость вращения вокруг своей оси</param>
        /// <param name="rotate_texture">вращать текстуру</param>
        public CoordsPositions Sphere(double r, int nx, int ny, double sx, double sy, double sz, double speed, bool rotate_texture = true)
        {
            int    ix, iy;
            double x, y, z, tex_x, tex_y;

            for (iy = 0; iy < ny; ++iy)
            {
                tex_y = (double)iy / (double)ny;

                //начинаем рисовать четырехугольник
                GL.Begin(PrimitiveType.QuadStrip);
                for (ix = 0; ix <= nx; ++ix)
                {
                    //вращение вокруг своей оси
                    tex_x = (double)ix / (double)nx + (rotate_texture ? speed - Math.Floor(speed) : 0);
                    x     = r * Math.Sin(iy * Math.PI / ny) * Math.Cos(2 * ix * Math.PI / nx) + sx;
                    y     = r * Math.Sin(iy * Math.PI / ny) * Math.Sin(2 * ix * Math.PI / nx) + sy;
                    z     = r * Math.Cos(iy * Math.PI / ny) + sz;
                    GL.Normal3(x, y, z);        //нормаль направлена от центра
                    GL.TexCoord2(tex_x, tex_y); //задаем координаты текстуры для вращения вокруг своей оси
                    GL.Vertex3(x, y, z);        //Задаем координаты точек

                    //задаем координаты перемещения планет
                    x = r * Math.Sin((iy + 1) * Math.PI / ny) * Math.Cos(2 * ix * Math.PI / nx) + sx;
                    y = r * Math.Sin((iy + 1) * Math.PI / ny) * Math.Sin(2 * ix * Math.PI / nx) + sy;
                    z = r * Math.Cos((iy + 1) * Math.PI / ny) + sz;
                    GL.Normal3(x, y, z);
                    GL.TexCoord2(tex_x, tex_y + 1.0 / (double)ny);
                    GL.Vertex3(x, y, z);
                    if (iy == 1 && ix == 1)
                    {
                        X = -x;
                    }
                    Y = -y; Z = -z;
                }
                GL.End();
            }
            CoordsPositions coord = new CoordsPositions {
                X = X, Y = Y, Z = Z
            };

            return(coord);
        }