コード例 #1
0
ファイル: Mundo.cs プロジェクト: gustavospiess/gcg-cg
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
            Matrix4 modelview = Matrix4.LookAt(camera.Eye, camera.At, camera.Up);

            GL.MatrixMode(MatrixMode.Modelview);
            GL.LoadMatrix(ref modelview);
#if CG_Gizmo
            Sru3D();
#endif
            for (var i = 0; i < objetosLista.Count; i++)
            {
                objetosLista[i].Desenhar();
            }
            if (bBoxDesenhar && (objetoSelecionado != null))
            {
                objetoSelecionado.BBox.Desenhar();
            }

            Transformacao4D tr = new Transformacao4D();
            tr.AtribuirEscala(50, 50, 50);
            Ponto4D pt = new Ponto4D(0, 0, 0);

            GL.LineWidth(5);
            GL.Color3(0, 0, 0);
            GL.Begin(PrimitiveType.LineLoop);
            for (var i = 0; i < movimentos.Count; i++)
            {
                for (var j = 0; j < qtMovimentos[i]; j++)
                {
                    Ponto4D pt2 = tr.MultiplicarPonto(pt);
                    GL.Vertex3(pt2.X, pt2.Y, pt2.Z);
                    tr = tr.MultiplicarMatriz(movimentos[i]);
                }
            }
            GL.End();

            objetoSelecionado.Matriz = objetoSelecionado.Matriz.MultiplicarMatriz(this.movimentos[i]);
            j++;
            if (j >= this.qtMovimentos[i])
            {
                i++;
                j = 0;
                if (i >= this.movimentos.Count)
                {
                    i = 0;
                }
            }

            this.SwapBuffers();
        }
コード例 #2
0
ファイル: Mundo.cs プロジェクト: gustavospiess/gcg-cg
        private void EyeRotate(float n)
        {
            Transformacao4D matA = new Transformacao4D();

            matA.AtribuirTranslacao(camera.At.X, camera.At.Y, camera.At.Z);
            Transformacao4D matB = new Transformacao4D();

            matB.AtribuirRotacaoY(n * Math.PI / 120);
            matA = matA.MultiplicarMatriz(matB);
            matB.AtribuirTranslacao(-1 * camera.At.X, -1 * camera.At.Y, -1 * camera.At.Z);
            matA            = matA.MultiplicarMatriz(matB);
            this.camera.Eye = PontoToVector(matA.MultiplicarPonto(VectorToPonto(this.camera.Eye)));
        }