private void comboBoxTypeFigure_SelectedIndexChanged(object sender, EventArgs e)
 {
     _typeObjectCreate = ((ComboboxDataSourceTypeFigure)comboBoxTypeFigure.SelectedItem).TypeFigure;
     if (_typeObjectCreate == TypeObjectCreate.SolidCube)
     {
         labelAngelX.Enabled         = false;
         labelAngelY.Enabled         = false;
         labelAngelZ.Enabled         = false;
         numericUpDownAngelX.Enabled = false;
         numericUpDownAngelY.Enabled = false;
         numericUpDownAngelZ.Enabled = false;
         labelColBreakX.Enabled      = false;
         labelColBreakY.Enabled      = false;
         labelCoeffSX.Enabled        = false;
         labelCoeffSY.Enabled        = false;
         textBoxColBreakX.Enabled    = false;
         textBoxColBreakY.Enabled    = false;
         textBoxCoeffSX.Enabled      = false;
         textBoxCoeffSY.Enabled      = false;
     }
     if (_typeObjectCreate == TypeObjectCreate.Plane)
     {
         labelAngelX.Enabled         = true;
         labelAngelY.Enabled         = true;
         labelAngelZ.Enabled         = true;
         numericUpDownAngelX.Enabled = true;
         numericUpDownAngelY.Enabled = true;
         numericUpDownAngelZ.Enabled = true;
         labelColBreakX.Enabled      = false;
         labelColBreakY.Enabled      = false;
         labelCoeffSX.Enabled        = false;
         labelCoeffSY.Enabled        = false;
         textBoxColBreakX.Enabled    = false;
         textBoxColBreakY.Enabled    = false;
         textBoxCoeffSX.Enabled      = false;
         textBoxCoeffSY.Enabled      = false;
     }
     if (_typeObjectCreate == TypeObjectCreate.Sphere)
     {
         labelAngelX.Enabled         = false;
         labelAngelY.Enabled         = false;
         labelAngelZ.Enabled         = false;
         numericUpDownAngelX.Enabled = false;
         numericUpDownAngelY.Enabled = false;
         numericUpDownAngelZ.Enabled = false;
         labelColBreakX.Enabled      = true;
         labelColBreakY.Enabled      = true;
         labelCoeffSX.Enabled        = true;
         labelCoeffSY.Enabled        = true;
         textBoxColBreakX.Enabled    = true;
         textBoxColBreakY.Enabled    = true;
         textBoxCoeffSX.Enabled      = true;
         textBoxCoeffSY.Enabled      = true;
     }
 }
Beispiel #2
0
 public GeometricInfo(Vector4 locColorObj, float shiftx = 0, float shifty = 0, float shiftz = 0, float locSide = 1.0f, int locColBreakX = 1, int locColBreakY = 1, int locCoeffSX = 1, int locCoeffSY = 1, int locAngleX = 0, int locAngleY = 0, int locAngleZ = 0, TypeObjectCreate locTypeObjectCreate = TypeObjectCreate.NonTypeObject)
 {
     side              = locSide;
     StartPosition     = new Vector3(shiftx, shifty, shiftz);
     colBreakX         = locColBreakX;
     colBreakY         = locColBreakY;
     coeffSX           = locCoeffSX;
     coeffSY           = locCoeffSY;
     StartAngleX       = locAngleX;
     StartAngleY       = locAngleY;
     StartAngleZ       = locAngleZ;
     typeObjectCreate  = locTypeObjectCreate;
     ColorObj          = locColorObj;
     TranslationMatrix = Matrix4.CreateTranslation(StartPosition);
     RotationMatrix    = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(StartAngleX)) * Matrix4.CreateRotationY(MathHelper.DegreesToRadians(StartAngleY)) * Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(StartAngleZ));
 }
Beispiel #3
0
 public GeometricInfo(GeometricInfo geometricInfo)
 {
     side              = geometricInfo.side;
     StartPosition     = geometricInfo.StartPosition;
     colBreakX         = geometricInfo.colBreakX;
     colBreakY         = geometricInfo.colBreakY;
     coeffSX           = geometricInfo.coeffSX;
     coeffSY           = geometricInfo.coeffSX;
     StartAngleX       = geometricInfo.StartAngleX;
     StartAngleY       = geometricInfo.StartAngleY;
     StartAngleZ       = geometricInfo.StartAngleZ;
     typeObjectCreate  = geometricInfo.typeObjectCreate;
     ColorObj          = geometricInfo.ColorObj;
     TranslationMatrix = geometricInfo.TranslationMatrix;
     RotationMatrix    = geometricInfo.RotationMatrix;
 }
Beispiel #4
0
 public GeometricInfo(Vector3 locStartPosition, float colorR = 0, float colorG = 0, float colorB = 0, float colorA = 0, float locSide = 1.0f, int locColBreakX = 1, int locColBreakY = 1, int locCoeffSX = 1, int locCoeffSY = 1, int locAngleX = 0, int locAngleY = 0, int locAngleZ = 0, TypeObjectCreate locTypeObjectCreate = TypeObjectCreate.NonTypeObject)
 {
     side              = locSide;
     StartPosition     = locStartPosition;
     colBreakX         = locColBreakX;
     colBreakY         = locColBreakY;
     coeffSX           = locCoeffSX;
     coeffSY           = locCoeffSY;
     StartAngleX       = locAngleX;
     StartAngleY       = locAngleY;
     StartAngleZ       = locAngleZ;
     typeObjectCreate  = locTypeObjectCreate;
     ColorObj          = new Vector4(colorR, colorG, colorB, colorA);
     TranslationMatrix = Matrix4.CreateTranslation(StartPosition);
     RotationMatrix    = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(StartAngleX)) * Matrix4.CreateRotationY(MathHelper.DegreesToRadians(StartAngleY)) * Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(StartAngleZ));
 }
Beispiel #5
0
        public RenderObject(Vertex[] vertices, Vector3 startPosition, Color4 color, Color4 locСolorСhoice, TypeObjectRenderLight typeObject = TypeObjectRenderLight.SimpleObject, bool plane = false, float locSide = 1, TypeObjectCreate locTypeObjectCreate = TypeObjectCreate.SolidCube, int locColBreakX = 1, int locColBreakY = 1, int locCoeffSX = 1, int locCoeffSY = 1, int locAngleX = 0, int locAngleY = 0, int locAngleZ = 0)
        {
            geometricInfo         = new GeometricInfo(startPosition, new Vector4(color.R, color.G, color.B, color.A), locSide, locColBreakX, locColBreakY, locCoeffSX, locCoeffSY, locAngleX, locAngleY, locAngleZ, locTypeObjectCreate);
            trajctoryRenderObject = new TrajctoryRenderObject();
            _VerticeCount         = vertices.Length;
            _VertexArray          = GL.GenVertexArray();
            TypeObject            = typeObject;
            GL.GenBuffers(1, out _Buffer);
            //PolygonMode.Line
            GL.BindVertexArray(_VertexArray);
            GL.BindBuffer(BufferTarget.ArrayBuffer, _Buffer);
            GL.NamedBufferStorage(_Buffer, Vertex.Size * _VerticeCount,          // the size needed by this buffer
                                  vertices,                                      // data to initialize with
                                  BufferStorageFlags.MapWriteBit);               // at this point we will only write to the buffer
                                                                                 // create vertex array and buffer here

            GL.VertexArrayAttribBinding(_VertexArray, 1, 0);
            GL.EnableVertexArrayAttrib(_VertexArray, 1);
            GL.VertexArrayAttribFormat(
                _VertexArray,
                1,                                                               // attribute index, from the shader location = 0
                4,                                                               // size of attribute, vec4
                VertexAttribType.Float,                                          // contains floats
                false,                                                           // does not need to be normalized as it is already, floats ignore this flag anyway
                0);                                                              // relative offset, first item

            GL.VertexArrayAttribBinding(_VertexArray, 2, 0);
            GL.EnableVertexArrayAttrib(_VertexArray, 2);
            GL.VertexArrayAttribFormat(
                _VertexArray,
                2,                                                               // attribute index, from the shader location = 1
                4,                                                               // size of attribute, vec4
                VertexAttribType.Float,                                          // contains floats
                false,                                                           // does not need to be normalized as it is already, floats ignore this flag anyway
                16);                                                             // relative offset after a vec4
            GL.VertexArrayAttribBinding(_VertexArray, 3, 0);
            GL.EnableVertexArrayAttrib(_VertexArray, 3);
            GL.VertexArrayAttribFormat(
                _VertexArray,
                3,                                                               // attribute index, from the shader location = 2
                4,                                                               // size of attribute, vec4
                VertexAttribType.Float,                                          // contains floats
                false,                                                           // does not need to be normalized as it is already, floats ignore this flag anyway
                32);                                                             // relative offset after a vec4 + vec4

            _Initialized = true;
            GL.VertexArrayVertexBuffer(_VertexArray, 0, _Buffer, IntPtr.Zero, Vertex.Size);
            ColorСhoice.X = locСolorСhoice.R;
            ColorСhoice.Y = locСolorСhoice.G;
            ColorСhoice.Z = locСolorСhoice.B;
            ColorСhoice.W = locСolorСhoice.A;
            if (plane)
            {
                bufferProjectionShadow(vertices);
            }
        }
Beispiel #6
0
 public LightObject(Vertex[] vertices, Color4 color, Color4 color_choice, Vector3 position, Vector4 attribute, Vector3 lighVecNormalized, Vector3 diffusionIntensity, Vector3 angle_speed, int programBlock = -1, string nameBlock = null, float side = 1, TypeObjectCreate locTypeObjectCreate = TypeObjectCreate.SolidCube, int locColBreakX = 1, int locColBreakY = 1, int locCoeffSX = 1, int locCoeffSY = 1, int locAngleX = 0, int locAngleY = 0, int locAngleZ = 0) : base(vertices, position, color, color_choice, TypeObjectRenderLight.LightSourceObject, locSide: side, locTypeObjectCreate: locTypeObjectCreate, locColBreakX: locColBreakX, locColBreakY: locColBreakY, locCoeffSX: locCoeffSX, locCoeffSY: locCoeffSY, locAngleX: locAngleX, locAngleY: locAngleY, locAngleZ: locAngleZ)
 {
     Position           = position;    //Позиция источника
     StartPosition      = position;
     Angel_speed        = angle_speed; //X - Скорость и направление Y и Z - угол поворота по соответствующим осям
     Attribute          = attribute;   //Я ещё придумаю зачем я это добавил
     LightVecNormalized = lighVecNormalized;
     DiffusionIntensity = diffusionIntensity;
     ColorRadiation.X   = color.R;
     ColorRadiation.Y   = color.G;
     ColorRadiation.Z   = color.B;
     ColorRadiation.W   = color.A;
     if (programBlock != -1)
     {
         if (!string.IsNullOrWhiteSpace(nameBlock))
         {
             InitBufferForBlock(programBlock, nameBlock);
         }
         else
         {
             InitBufferForBlock(programBlock);
         }
     }
 }
        public DlgAddEditAnFigure(GeometricInfo geometricInfo, bool NewFigure = true)
        {
            Text = "Изменение аналитической фигуры";
            InitializeComponent();
            InitComboBox();
            _typeObjectCreate = geometricInfo.typeObjectCreate;
            comboBoxTypeFigure.SelectedItem = ((List <ComboboxDataSourceTypeFigure>)comboBoxTypeFigure.DataSource).Where(x => x.TypeFigure == _typeObjectCreate).FirstOrDefault();
            comboBoxTypeFigure.Enabled      = !NewFigure;
            trackBarAlpha.Value             = (int)(geometricInfo.ColorObj.W * 10); //Округляем как можем
            textBoxSide.Text = geometricInfo.side.ToString();
            Vector3 translation = geometricInfo.TranslationMatrix.ExtractTranslation();

            textBoxShiftX.Text    = translation.X.ToString();
            textBoxShiftY.Text    = translation.Y.ToString();
            textBoxShiftZ.Text    = translation.Z.ToString();
            textBoxColBreakX.Text = geometricInfo.colBreakX.ToString();
            textBoxColBreakY.Text = geometricInfo.colBreakY.ToString();
            textBoxCoeffSX.Text   = geometricInfo.coeffSX.ToString();
            textBoxCoeffSY.Text   = geometricInfo.coeffSY.ToString();
            var anlgeQauternion = geometricInfo.RotationMatrix.ExtractRotation();
            var tau             = Math.Acos(anlgeQauternion.W);
            var ax = 0;
            var ay = 0;
            var az = 0;

            if (Math.Abs(tau) > 0)
            {
                ax = Convert.ToInt32(Math.Round(anlgeQauternion.X / Math.Sin(tau) * tau / MathHelper.PiOver2 * 180, MidpointRounding.AwayFromZero));
                ay = Convert.ToInt32(Math.Round(anlgeQauternion.Y / Math.Sin(tau) * tau / MathHelper.PiOver2 * 180, MidpointRounding.AwayFromZero));
                az = Convert.ToInt32(Math.Round(anlgeQauternion.Z / Math.Sin(tau) * tau / MathHelper.PiOver2 * 180, MidpointRounding.AwayFromZero));
            }
            numericUpDownAngelX.Value = ax;
            numericUpDownAngelY.Value = ay;
            numericUpDownAngelZ.Value = az;
            if (_typeObjectCreate == TypeObjectCreate.SolidCube)
            {
                labelAngelX.Enabled         = false;
                labelAngelY.Enabled         = false;
                labelAngelZ.Enabled         = false;
                numericUpDownAngelX.Enabled = true;
                numericUpDownAngelY.Enabled = true;
                numericUpDownAngelZ.Enabled = true;
                labelColBreakX.Enabled      = false;
                labelColBreakY.Enabled      = false;
                labelCoeffSX.Enabled        = false;
                labelCoeffSY.Enabled        = false;
                textBoxColBreakX.Enabled    = false;
                textBoxColBreakY.Enabled    = false;
                textBoxCoeffSX.Enabled      = false;
                textBoxCoeffSY.Enabled      = false;
            }
            if (_typeObjectCreate == TypeObjectCreate.Plane)
            {
                labelAngelX.Enabled         = true;
                labelAngelY.Enabled         = true;
                labelAngelZ.Enabled         = true;
                numericUpDownAngelX.Enabled = true;
                numericUpDownAngelY.Enabled = true;
                numericUpDownAngelZ.Enabled = true;
                labelColBreakX.Enabled      = false;
                labelColBreakY.Enabled      = false;
                labelCoeffSX.Enabled        = false;
                labelCoeffSY.Enabled        = false;
                textBoxColBreakX.Enabled    = false;
                textBoxColBreakY.Enabled    = false;
                textBoxCoeffSX.Enabled      = false;
                textBoxCoeffSY.Enabled      = false;
            }
            if (_typeObjectCreate == TypeObjectCreate.Sphere)
            {
                labelAngelX.Enabled         = false;
                labelAngelY.Enabled         = false;
                labelAngelZ.Enabled         = false;
                numericUpDownAngelX.Enabled = true;
                numericUpDownAngelY.Enabled = true;
                numericUpDownAngelZ.Enabled = true;
                labelColBreakX.Enabled      = true;
                labelColBreakY.Enabled      = true;
                labelCoeffSX.Enabled        = true;
                labelCoeffSY.Enabled        = true;
                textBoxColBreakX.Enabled    = true;
                textBoxColBreakY.Enabled    = true;
                textBoxCoeffSX.Enabled      = true;
                textBoxCoeffSY.Enabled      = true;
            }
        }
 public DlgAddEditAnFigure(TypeObjectCreate locTypeObjectCreate = TypeObjectCreate.SolidCube, float locAlphaObject = 1.0f, float locSide = 1.0f, float shiftx = 0, float shifty = 0, float shiftz = 0, int locColBreakX = 1, int locColBreakY = 1, int locCoeffSX = 1, int locCoeffSY = 1, int locAngleX = 0, int locAngleY = 0, int locAngleZ = 0, bool NewFigure = true)
 {
     Text = "Изменение аналитической фигуры";
     InitializeComponent();
     InitComboBox();
     comboBoxTypeFigure.SelectedItem = ((List <ComboboxDataSourceTypeFigure>)comboBoxTypeFigure.DataSource).Where(x => x.TypeFigure == locTypeObjectCreate).FirstOrDefault();
     comboBoxTypeFigure.Enabled      = NewFigure;
     _typeObjectCreate         = locTypeObjectCreate;
     trackBarAlpha.Value       = (int)(locAlphaObject * 10); //Округляем как можем
     textBoxSide.Text          = locSide.ToString();
     textBoxShiftX.Text        = shiftx.ToString();
     textBoxShiftY.Text        = shifty.ToString();
     textBoxShiftZ.Text        = shiftz.ToString();
     textBoxColBreakX.Text     = locColBreakX.ToString();
     textBoxColBreakY.Text     = locColBreakY.ToString();
     textBoxCoeffSX.Text       = locCoeffSX.ToString();
     textBoxCoeffSY.Text       = locCoeffSY.ToString();
     numericUpDownAngelX.Value = locAngleX;
     numericUpDownAngelY.Value = locAngleY;
     numericUpDownAngelZ.Value = locAngleZ;
     if (_typeObjectCreate == TypeObjectCreate.SolidCube)
     {
         labelAngelX.Enabled         = false;
         labelAngelY.Enabled         = false;
         labelAngelZ.Enabled         = false;
         numericUpDownAngelX.Enabled = false;
         numericUpDownAngelY.Enabled = false;
         numericUpDownAngelZ.Enabled = false;
         labelColBreakX.Enabled      = false;
         labelColBreakY.Enabled      = false;
         labelCoeffSX.Enabled        = false;
         labelCoeffSY.Enabled        = false;
         textBoxColBreakX.Enabled    = false;
         textBoxColBreakY.Enabled    = false;
         textBoxCoeffSX.Enabled      = false;
         textBoxCoeffSY.Enabled      = false;
     }
     if (_typeObjectCreate == TypeObjectCreate.Plane)
     {
         labelAngelX.Enabled         = true;
         labelAngelY.Enabled         = true;
         labelAngelZ.Enabled         = true;
         numericUpDownAngelX.Enabled = true;
         numericUpDownAngelY.Enabled = true;
         numericUpDownAngelZ.Enabled = true;
         labelColBreakX.Enabled      = false;
         labelColBreakY.Enabled      = false;
         labelCoeffSX.Enabled        = false;
         labelCoeffSY.Enabled        = false;
         textBoxColBreakX.Enabled    = false;
         textBoxColBreakY.Enabled    = false;
         textBoxCoeffSX.Enabled      = false;
         textBoxCoeffSY.Enabled      = false;
     }
     if (_typeObjectCreate == TypeObjectCreate.Sphere)
     {
         labelAngelX.Enabled         = false;
         labelAngelY.Enabled         = false;
         labelAngelZ.Enabled         = false;
         numericUpDownAngelX.Enabled = false;
         numericUpDownAngelY.Enabled = false;
         numericUpDownAngelZ.Enabled = false;
         labelColBreakX.Enabled      = true;
         labelColBreakY.Enabled      = true;
         labelCoeffSX.Enabled        = true;
         labelCoeffSY.Enabled        = true;
         textBoxColBreakX.Enabled    = true;
         textBoxColBreakY.Enabled    = true;
         textBoxCoeffSX.Enabled      = true;
         textBoxCoeffSY.Enabled      = true;
     }
 }