0

When i click to mouse my graphic able to rotate but when i up to mouse graphic turning back initial position i don't know why here this my events

here this illustrations about my issue

enter image description here

i think it is totally different like moving on the picturebox

Mouse_up event

 private void simpleOpenGlControl1_MouseUp(object sender, MouseEventArgs e)
        {
            Dragging2 = false;
        } 

 private void simpleOpenGlControl1_MouseMove(object sender, MouseEventArgs e)
        {
            xrot -= 0.5;
            simpleOpenGlControl1.Refresh();

        } 

Mouse_down event

        {
            
            if (e.Button == MouseButtons.Left)
            {
                    Dragging2 = true;
            }
           
        } 
            double olcek3d_gen1 = obj.genislikDeger1 / pictureBox1.Width;
            double olcek3d_gen2 = obj.genislikDeger2 / pictureBox1.Width;
            double olcek3d_gen3 = obj.genislikDeger3 / pictureBox1.Width;
            double olcek3d_gen4 = obj.genislikDeger4 / pictureBox1.Width;

            double olcek3d_yuk1 = obj.yukselikDeger1 / pictureBox1.Width;
            double olcek3d_yuk2 = obj.yukselikDeger2 / pictureBox1.Width;
            double olcek3d_yuk3 = obj.yukselikDeger3 / pictureBox1.Width;
            double olcek3d_yuk4 = obj.yukselikDeger4 / pictureBox1.Width;

            double olcek_derinlik = obj.L / pictureBox1.Width;





            //Gl.glColorMask(1,1,1,1);




            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT | Gl.GL_ACCUM_BUFFER_BIT);

            Gl.glEnable(Gl.GL_DEPTH_TEST); //clear buffers to preset values
            Gl.glClearColor(0, 0, 0, 0);

           /* Gl.glEnable(Gl.GL_COLOR_MATERIAL);

            Gl.glEnable(Gl.GL_LIGHTING);

            Gl.glEnable(Gl.GL_LIGHT0);*/




            Gl.glBlendFunc(Gl.GL_ONE, Gl.GL_ONE_MINUS_SRC_ALPHA);

            Gl.glMatrixMode(Gl.GL_MODELVIEW);

            Gl.glLoadIdentity();                 // load the identity matrix
                                                 // load the identity 
            Gl.glTranslated(left_right, up_down, sabit3D);



            //Gl.glEnable(Gl.GL_TEXTURE_2D);
            if (Dragging2)
            {
                Gl.glRotated(xrot, xRotate, yRotate, zRotate);
                listBox1.Items.Add("angle  " + xrot.ToString() +"  xrot  "+ xRotate+"  yrot  "+ yRotate+"  zrot  "+zRotate+"  left_right  "+left_right+"  up_Down  "+ up_down);
            }
           







            //rotate on y
            //Gl.glRotated(zrot += 0.5, 0, 0, 1); //rotate on z



            //face 1.0

            //face 2.0 görünen açıdan sağdaki
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(90, 90, 90);
            Gl.glVertex3d(olcek3d_gen1, 0, 0);
            Gl.glVertex3d(olcek3d_gen1, 0, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen1, olcek3d_yuk1, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen1, olcek3d_yuk1, 0);
            Gl.glEnd();

            //face 3.0 ön yüzey
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(100, 100, 100);
            Gl.glVertex3d(0, 0, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen1, 0, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen1, olcek3d_yuk1, olcek_derinlik);
            Gl.glVertex3d(0, olcek3d_yuk1, olcek_derinlik);
            Gl.glEnd();

            //face 4.0 arka yüzey

            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(110, 110, 110);
            Gl.glVertex3d(0, 0, 0);
            Gl.glVertex3d(0, 0, olcek_derinlik);
            Gl.glVertex3d(0, olcek3d_yuk1, olcek_derinlik);
            Gl.glVertex3d(0, olcek3d_yuk1, 0);
            Gl.glEnd();

            //face 5.0 üst yüzey



            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(100, 100, 100);
            Gl.glVertex3d(0, olcek3d_yuk1, 0);
            Gl.glVertex3d(olcek3d_gen1, olcek3d_yuk1, 0);
            Gl.glVertex3d(olcek3d_gen1, olcek3d_yuk1, olcek_derinlik);
            Gl.glVertex3d(0, olcek3d_yuk1, olcek_derinlik);
            Gl.glEnd();


            //face 6.0 // sorun olan bölge başlangıc en zıt arkası
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(100, 100, 100);
            Gl.glVertex3d(0, 0, 0);
            Gl.glVertex3d(olcek3d_gen1, 0, 0);
            Gl.glVertex3d(olcek3d_gen1, olcek3d_yuk1, 0);
            Gl.glVertex3d(0, olcek3d_yuk1, 0);
            Gl.glEnd();

            //face 1.1

            Gl.glBegin(Gl.GL_QUADS);    //start drawing GL_QUADSis the connection mode
            Gl.glColor3ub(90, 90, 90);

            Gl.glVertex3d(0, -1 * olcek3d_yuk2, 0);
            Gl.glVertex3d(olcek3d_gen2, -1 * olcek3d_yuk2, 0);
            Gl.glVertex3d(olcek3d_gen2, 0, 0);
            Gl.glVertex3d(0, 0, 0);
            Gl.glEnd();

            //face 2.1
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(70, 70, 70);
            Gl.glVertex3d(olcek3d_gen2, -1 * olcek3d_yuk2, 0);
            Gl.glVertex3d(olcek3d_gen2, -1 * olcek3d_yuk2, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen2, 0, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen2, 0, 0);
            Gl.glEnd();

            //face 3.1
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(80, 80, 80);
            Gl.glVertex3d(0, -1 * olcek3d_yuk2, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen2, -1 * olcek3d_yuk2, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen2, 0, olcek_derinlik);
            Gl.glVertex3d(0, 0, olcek_derinlik);
            Gl.glEnd();

            //face 4.1
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(90, 90, 90);
            Gl.glVertex3d(0, -1 * olcek3d_yuk2, 0);
            Gl.glVertex3d(0, -1 * olcek3d_yuk2, olcek_derinlik);
            Gl.glVertex3d(0, 0, olcek_derinlik);
            Gl.glVertex3d(0, 0, 0);
            Gl.glEnd();

            //face cover.1 çizgi level
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glColor3ub(80, 80, 80);
            Gl.glVertex3d(olcek3d_gen1, 0, 0);
            Gl.glVertex3d(olcek3d_gen2, 0, 0);
            Gl.glVertex3d(olcek3d_gen2, 0, olcek_derinlik);
            Gl.glVertex3d(olcek3d_gen1, 0, olcek_derinlik);
            Gl.glEnd();


            if (sev.Value == 2)
            {
                //face 5.1
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(85, 85, 85);
                Gl.glVertex3d(0, -1 * olcek3d_yuk2, 0);
                Gl.glVertex3d(olcek3d_gen2, -1 * olcek3d_yuk2, 0);
                Gl.glVertex3d(olcek3d_gen2, -1 * olcek3d_yuk2, olcek_derinlik);
                Gl.glVertex3d(0, -1 * olcek3d_yuk2, olcek_derinlik);
                Gl.glEnd();
            }


            if (sev.Value >= 3)
            {
                //face 1.2

                Gl.glBegin(Gl.GL_QUADS);    //start drawing GL_QUADSis the connection mode
                Gl.glColor3ub(85, 85, 85);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glVertex3d(olcek3d_gen3, -1 * olcek3d_yuk2, 0);
                Gl.glVertex3d(0, -1 * olcek3d_yuk2, 0);
                Gl.glEnd();

                //face 2.2
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(70, 70, 70);
                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen3, -1 * olcek3d_yuk2, olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen3, -1 * olcek3d_yuk2, 0);
                Gl.glEnd();

                //face 3.2
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(90, 90, 90);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen3, -1 * olcek3d_yuk2, olcek_derinlik);
                Gl.glVertex3d(0, -1 * olcek3d_yuk2, olcek_derinlik);
                Gl.glEnd();

                //face 4.2
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(85, 85, 85);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glVertex3d(0, -1 * olcek3d_yuk2, olcek_derinlik);
                Gl.glVertex3d(0, -1 * olcek3d_yuk2, 0);
                Gl.glEnd();

                //face kapak.2
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(80, 80, 80);

                Gl.glVertex3d(olcek3d_gen2, -1 * (olcek3d_yuk1), 0);
                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk1), 0);
                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk1), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen2, -1 * (olcek3d_yuk1), olcek_derinlik);
                Gl.glEnd();



                if (sev.Value == 3)
                {
                    //face 5.2
                    Gl.glBegin(Gl.GL_QUADS);
                    Gl.glColor3ub(85, 85, 85);
                    Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                    Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                    Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                    Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                    Gl.glEnd();

                }


            }
            if (sev.Value == 4)
            {
                //face 1.3

                Gl.glBegin(Gl.GL_QUADS);    //start drawing GL_QUADSis the connection mode
                Gl.glColor3ub(85, 85, 85);

                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), 0);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), 0);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glEnd();

                //face 2.3
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(70, 70, 70);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), 0);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glEnd();

                //face 3.3
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(90, 90, 90);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glEnd();

                //face 4.3
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(85, 85, 85);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), 0);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), olcek_derinlik);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), olcek_derinlik);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3), 0);
                Gl.glEnd();
                //face 5.3
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(85, 85, 85);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), 0);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), 0);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), olcek_derinlik);
                Gl.glVertex3d(0, -1 * (olcek3d_yuk2 + olcek3d_yuk3 + olcek3d_yuk4), olcek_derinlik);
                Gl.glEnd();

                //face kapak.2
                Gl.glBegin(Gl.GL_QUADS);
                Gl.glColor3ub(80, 80, 80);

                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk1 + olcek3d_yuk2), 0);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk1 + olcek3d_yuk2), 0);
                Gl.glVertex3d(olcek3d_gen4, -1 * (olcek3d_yuk1 + olcek3d_yuk2), olcek_derinlik);
                Gl.glVertex3d(olcek3d_gen3, -1 * (olcek3d_yuk1 + olcek3d_yuk2), olcek_derinlik);
                Gl.glEnd();
            }

genpfault
  • 51,148
  • 11
  • 85
  • 139
sarac
  • 67
  • 8

1 Answers1

0

because you are applying xrot rotation only while Dragging2 is active... you should either do it each frame or on mouse up apply final rotation to some initial matrix that is used to init the model view at start of frame instead of identity

So the simplest is to change:

if (Dragging2)
    {
    Gl.glRotated(xrot, xRotate, yRotate, zRotate);
    listBox1.Items.Add("angle  " + xrot.ToString() +"  xrot  "+ xRotate+"  yrot  "+ yRotate+"  zrot  "+zRotate+"  left_right  "+left_right+"  up_Down  "+ up_down);
    }

into:

Gl.glRotated(xrot, xRotate, yRotate, zRotate);
if (Dragging2)
    {
    listBox1.Items.Add("angle  " + xrot.ToString() +"  xrot  "+ xRotate+"  yrot  "+ yRotate+"  zrot  "+zRotate+"  left_right  "+left_right+"  up_Down  "+ up_down);
    }

not sure for what the list box is for (or if it does not memory leak ...). However if your xRotate, yRotate, zRotate changes then you need to imlement initial cumulative matrix ...

Spektre
  • 49,595
  • 11
  • 110
  • 380
  • @sarac I strongly recommend to take alook at my [Understanding 4x4 homogenous transform matrices](https://stackoverflow.com/a/28084380/2521214) and the sublinks (especially those at the end of answer) ... for some ideas on how to use matrices ... – Spektre Jul 06 '20 at 09:09