Ejemplo n.º 1
0
        private void AnT_Load(object sender, EventArgs e)
        {
            GL.Enable(EnableCap.DepthTest);
            float[] light2_diffuse  = { 0.9f, 0.9f, 1.0f }; //цвет появления
            float[] light2_position = { 0.0f, 5.0f, 30.0f, 0.0f };
            GL.Enable(EnableCap.Light2);
            GL.Light(LightName.Light2, LightParameter.Diffuse, light2_diffuse);
            GL.Light(LightName.Light2, LightParameter.Position, light2_position);
            GL.Light(LightName.Light2, LightParameter.ConstantAttenuation, 0.01f);
            GL.Light(LightName.Light2, LightParameter.LinearAttenuation, 0.000009f);
            GL.Light(LightName.Light2, LightParameter.QuadraticAttenuation, 0.00009f);

            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

            //Задаем начальные позиции
            PosCam   = solS.position[1];    //камера
            PosPln   = solS.position[11];   //Общая удаленность планет
            PosFract = solS.position[12];   //Фрактал
            cmbBoxArea.SelectedIndex   = 1; //позиция планеты-гиганты
            cmbBoxPlanet.SelectedIndex = 0; //планеты - невыбрано
            cmbRule.SelectedIndex      = 0; //управление объектом - камера
            timer.Interval             = 20;
            timer.Tick   += movementObjects;
            timer.Enabled = true;
        }
Ejemplo n.º 2
0
 private void chFractal_CheckedChanged(object sender, EventArgs e)
 {
     ViewPythagorasTree  = chFractal.Checked;
     chViewAbove.Checked = ViewPythagorasTree;
     PosCam = ViewPythagorasTree ? solS.position[0] : solS.position[1];
     cmbBoxArea.SelectedIndex = ViewPythagorasTree ? 0 : 1;
     PosCam.Z = ViewPythagorasTree ? -12 : solS.position[1].Z;
 }
Ejemplo n.º 3
0
 private void hideCometHalley(object sender, EventArgs e)
 {
     cometHalleyRun      = false;
     chViewAbove.Checked = cometHalleyRun ? true : false;
     cometHalley.Image   = Bitmap.FromFile(cometHalleyRun ? "images/asteroid-48.png" : "images/pastel-64.png");
     PosCam          = cometHalleyRun ? solS.position[2] : solS.position[1];
     AngleZ          = cometHalleyRun ? -5 : -5.6; //в минус влево
     tmComet.Enabled = false;
     tmComet         = new Timer();
 }
Ejemplo n.º 4
0
        private void cometHalley_Click(object sender, EventArgs e)
        {
            tmComet.Interval = 20000; //Запуск таймера на 20 секунд
            tmComet.Tick    += hideCometHalley;
            tmComet.Enabled  = true;

            cometHalleyRun      = !cometHalleyRun;
            chViewAbove.Checked = cometHalleyRun ? true : false;
            cometHalley.Image   = Bitmap.FromFile(cometHalleyRun ? "images/asteroid-48.png" : "images/pastel-64.png");
            PosCam = cometHalleyRun ? solS.position[2] : solS.position[1];
            AngleZ = cometHalleyRun ? -5 : -5.6; //в минус влево
        }
Ejemplo n.º 5
0
 private void cmbBoxArea_SelectedIndexChanged(object sender, EventArgs e)
 {
     AngleZ = -5.6;
     PosCam = cmbBoxArea.SelectedIndex == 0 ? solS.position[0] : solS.position[1];
     if (cmbBoxArea.SelectedIndex == 0)
     {
         viewJupiter = viewSaturn = viewUran = false;
     }
     else
     {
         viewJupiter = viewSaturn = viewUran = true;
     }
 }
Ejemplo n.º 6
0
        private void cmbBoxPlanet_SelectedIndexChanged(object sender, EventArgs e)
        {
            orbitsCheck.Checked = cmbBoxPlanet.SelectedIndex != 0 ? false : true;
            planetView          = cmbBoxPlanet.SelectedIndex != 0 ? true : false;
            chViewAbove.Checked = cmbBoxPlanet.SelectedIndex != 0 ? true : false;

            //остановка движения планет при просмотре
            //pause = cmbBoxPlanet.SelectedIndex != 0 ? true : false;
            //pauseMotion.Image = Bitmap.FromFile(pause ? "images/play 64.png" : "images/pause 64.png");
            //totalSpeedStart = pause ? 0 : speedMovement.Value * 0.001;

            if (cmbBoxPlanet.SelectedIndex == 0)
            {
                PosCam = solS.position[1];
            }
        }
Ejemplo n.º 7
0
        private void AnT_Paint(object sender, PaintEventArgs e)
        {
            // очистка буферов цвета и глубины
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
            GL.LoadIdentity();
            GL.Rotate(AngleZ, 0.0, 1.0, 0.0);           // поворот изображения
            GL.Translate(PosCam.X, PosCam.Y, PosCam.Z); //переащаем на нужную позицию
            //рисуем сферу космоса
            solS.DrawSpace(solS.Pictures[0], speedSpace);
            //рисуем солнце
            if (chExplosion.Checked)
            {
                solS.RenderExplosion();
            }
            solS.DrawSun(solS.Pictures[1], PosSun.X, PosSun.Y, PosSun.Z, speedSpace);
            //рисуем планеты
            if (viewMercury)//                        текстура,     скорость,         скоростьВращения    удаленность,       радиус
            {
                solS.position[3] = solS.DrawPlanet(solS.Pictures[2], totalSpeed / 2, rotateSpeed / 2, 5 + PosPln.X, realSize ? 0.0114 : 0.114);
            }
            if (viewVenus)
            {
                solS.position[4] = solS.DrawPlanet(solS.Pictures[3], totalSpeed / 3.5, rotateSpeed / 3.5, 6.5 + PosPln.X, realSize ? 0.0295 : 0.295);
            }
            if (viewEarth)
            {
                solS.position[5] = solS.DrawPlanet(solS.Pictures[4], totalSpeed / 5, rotateSpeed / 5, 8 + PosPln.X, realSize ? 0.03 : 0.3);
            }
            if (viewMars)
            {
                solS.position[6] = solS.DrawPlanet(solS.Pictures[5], totalSpeed / 6.5, rotateSpeed / 6.5, 9.1 + PosPln.X, realSize ? 0.0174 : 0.174);
            }
            if (viewJupiter)
            {
                solS.position[7] = solS.DrawPlanet(solS.Pictures[6], totalSpeed / 9, rotateSpeed / 9, 12.1 + PosPln.X, realSize ? 0.1 : 1);
            }
            if (viewSaturn)
            {
                solS.position[8] = solS.DrawPlanet(solS.Pictures[7], totalSpeed / 12, rotateSpeed / 12, 14.5 + PosPln.X, realSize ? 0.08 : 0.8);
            }
            if (viewUran)
            {
                solS.position[9] = solS.DrawPlanet(solS.Pictures[8], totalSpeed / 15.5, rotateSpeed / 15.5, 16.9 + PosPln.X, realSize ? 0.07 : 0.7);
            }
            if (viewNeptun)
            {
                solS.position[10] = solS.DrawPlanet(solS.Pictures[9], totalSpeed / 19, rotateSpeed / 19, 19 + PosPln.X, realSize ? 0.05 : 0.5);
            }
            if (cometHalleyRun)
            {
                solS.DrawComet(solS.Pictures[10], totalSpeed * 2, 21, 0.094);
            }

            if (ViewPythagorasTree)
            {
                solS.DrawPythagorasTree(PosFract.X, PosFract.Y, PosFract.Z);
            }
            if (chColorsGlob.Checked)
            {
                solS.PlayColors();
            }

            //крупный план планет
            if (planetView)
            {
                GL.Rotate(0, 1.0, 1.0, 1.0); // поворот изображения
                switch (cmbBoxPlanet.SelectedIndex)
                {
                case 1: { PosCam = solS.position[3]; PosCam.Z = -0.7; break; }

                case 2: { PosCam = solS.position[4]; PosCam.Z = -1; break; }

                case 3: { PosCam = solS.position[5]; PosCam.Z = -1; break; }

                case 4: { PosCam = solS.position[6]; PosCam.Z = -0.8; break; }

                case 5: { PosCam = solS.position[7]; PosCam.Z = -2.2; break; }

                case 6: { PosCam = solS.position[8]; PosCam.Z = -1.8; break; }

                case 7: { PosCam = solS.position[9]; PosCam.Z = -1.8; break; }

                case 8: { PosCam = solS.position[10]; PosCam.Z = -1.7; break; }
                }
            }

            GL.Flush();
            GL.Finish();
            AnT.SwapBuffers();
        }
Ejemplo n.º 8
0
 private void планетыгигантыToolStripMenuItem_Click(object sender, EventArgs e)
 {
     PosCam = solS.position[1]; AngleZ = -5.6;
 }
Ejemplo n.º 9
0
 private void планетыЗемнойГруппыMenuItem_Click(object sender, EventArgs e)
 {
     PosCam = solS.position[0]; AngleZ = -5.6;
 }