Ir para conteúdo
Fórum Script Brasil
  • 0

Exibição gráfica - Rotação de vetores


Diego Menezes

Pergunta

Olá pessoal.

Criei o algorítmo abaixo que rotaciona um vetor em 360°:

#include <iostream>
#include <math.h>
using namespace std;

int rot (int a_graus) {

    while (a_graus <= 360) {
        float a = a_graus*0.0174532925; //Conversão de graus para radianos.
        double M [2][2] = {{cos (a),-sin (a)}, {sin (a),cos (a)}}; //Matriz de rotação.

        cout << "\n\n";
        cout << "Vetor original:\n";

        cout << "| ";
        int vet [2] = {5,0}; //Vetor original.
        for (int i = 0; i < 2; i++) {
            cout << vet [i] << " | ";
        }
        float vet_R [2]; //Vetor rotacionado.
        vet_R [0] = M [0][0] * vet [0] + M [0][1] * vet [1];
        vet_R [1] = M [1][0] * vet [0] + M [1][1] * vet [1];

        cout << "\nVetor rotacionado a " << a_graus << " graus.\n";
        cout << "| ";
        for (int i = 0; i < 2; i++) {
            cout << vet_R [i] << " | ";
        }
        cout << "\n";
        a_graus = a_graus+30;
    }
}

int main()
{
    int a_graus;
    cout << "Digite o razao da rotacao:  ";
    cin >> a_graus;

    char M_demo [][15] = {"|cos   -sen a|","|sen a  cos a|"};
        cout << "\nMatriz de rotacao:\n";
        for(int i = 0; i < 2; i++){
            cout << M_demo [i] << endl;
        }

    rot (a_graus);
}

Então, ao que me parece, está funcionando corretamente.

O problema é que além disso, o professor de álgebra quer que mostremos isso graficamente.

Sei que é possível criar uma animação utilizado a biblioteca Allegro ou OpenGl, mas não tenho a mínima idéia de como fazer..Não sei nem por onde começar :S

Utilizo o compilador code blocks.

Gostaria que se possível alguém desse uma dica, porque estou perdidão!

Abraço!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Então, decidi utilizar uma library nova, que um conhecido meu desenvolveu, só que ainda não ta funfando.

Alguém consegue encontrar o problema?

#include "gamespace.h"
#include <stdlib.h>
#include <math.h>

// Rotaciona o ponto 'p' em 'a' graus
GS_VECTOR2 Rotaciona(GS_VECTOR2 p, const float a)
{
    
    const float fCosA = cosf(a); // pré-calcula o seno e coseno para evitar duas chamadas
    const float fSinA = sinf(a); //desenecessrárias da mesma função
    
    GS_VECTOR2 r;
    r.x = p.x * fCosA + p.y * fSinA;
    r.y =-p.x * fSinA + p.y * fCosA;
    return r;
}

int main(int argc, char* argv[])
{
    GAMESPACE_VIDEO_HANDLER gsVideo;

    //Cria uma janela pronta para receber as intruções do jogo
    if (gsVideo.StartApplication(640, 480, "GameSpaceLib window", true))
    {
        // Inicia o laço principal de renderização
        while (gsVideo.ManageLoop())
        {
            GS_VECTOR2 v2CentroDaTela = gsVideo.GetScreenDimF()/2.0f;
            static float fAngulo = 0;
            fAngulo+=0.04f;
            GS_VECTOR2 v2Vetor = Rotaciona(GS_VECTOR2(0,-100), fAngulo);

            gsVideo.DrawLine(v2CentroDaTela, v2CentroDaTela+v2Vetor, GS_WHITE, GS_RED);
        }
    }
    return 0;
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...