A comunidade brasileira de desenvolvimento e programação de jogos.
Bem-vindo: Sex Dez 04, 2020 1:26 am

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 5 mensagens ] 
Autor Mensagem
 Título: Ajuda com OpenGL
MensagemEnviado: Ter Jul 20, 2010 2:10 pm 
Offline
Membro novo

Registrado em: Ter Jul 20, 2010 1:24 pm
Mensagens: 3
Olá pessoal, sou novo por aqui... estive pesquisando onde conseguir ajuda sobre OpenGL, e encontrei este fórum, embora o assunto não seja jogos, espero que possam ajudar.

Poderiam indicar onde posso encontrar algum exemplo de como simular a animação de uma onda Senoidal ( EletroMagnetismo )?

Desde já obrigado pela atenção...

_________________
José Aparecido


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Ter Jul 20, 2010 9:58 pm 
Offline
Membro intermediário
Avatar do usuário

Registrado em: Qui Nov 12, 2009 8:34 pm
Mensagens: 97
hahahah...

Isso ta mais parecendo que voce esta levando porrada
de um trabalho de faculdade então
resolveu pedir ajuda aqui.

olha eu não vou te dar código nenhum pq o trabalho é seu e não vou fazer
nem procurar pra vc, mas posso te ajudar com o pouco que vc falou...

Bom, a equação de uma onda eletromagnética é um trombolho horrivel

tipo isso da aqui:

Imagem

Agora as derivadas parciais são a demonstração do caso mais geral possivel,
use uma função senoidal no lugar de Ex e Ey

Tipo:
Ex = cos(x)
Ey = sen(y)

ou a forma de onda mais correta:
Ex = cos(kx - wt)
Ey = sen(ky - wt)

(obs: w não é w, é omega... é que não da pra escrever essa letra aqui)
onde:
w = 2*PI * f
k = 2*PI / lambda

lambda = compr. de onda
f = frequencia

daí é só tacar no for de 0 ao valor limite que vc quiser.
onde x e y são as variaveis de incremento.

use GL_LINE para ligar os pontos da função
e glOrtho para uma projeção ortogonal, que vai produzir
uma perpectiva tipo 2D.

_________________
Alexandre (Abdalla) Cardoso.

Antigo Portifolio:
http://www.dcc.ufrj.br/~abdalla
(o novo ainda está em construção)


Voltar ao topo
 Perfil  
 
 Título: Onda Senoidal
MensagemEnviado: Qua Jul 21, 2010 8:45 am 
Offline
Membro novo

Registrado em: Ter Jul 20, 2010 1:24 pm
Mensagens: 3
Oi Alexandre, obrigado pelo retorno... passando uma idéia do que busco com OpenGL, a pouco mais de 1 ano fiz um curso em C++ para controle de dispositivos, combinando Software/Eletrônica, e neste, pude ter contato com OpenGL e perceber que é uma ferramenta excente para se criar Realidade Virtual... meu objetivo é criar recursos para a área médica...

Então a intenção por hora é conhecer melhor a ferramenta, tenho encontrado algum material na Internet, adquiri também um livro da Editora Novatec, enfim, estou tentando buscar conhecimento nesta área de forma auto-ditada...

Sou programador em outras linguagens a algum tempo, C++ com OpenGL pra mim é um campo novo, por isso preciso de ajuda pra prosseguir nos meus objetivos...

A função que você passou por hora vai além do que pretendo fazer, como disse, a idéia é interagir com OpenGL, e assim aprender a lidar com ela...

Encontrei um código que a princípio faz este trabalho, porém está com erro ( possilvelmente por estar imcompleto ) se puder me ajudar a entender melhor o que está acontendo, desde já muito obrigado.

O Código qiue encontrei na Internet é este:

(...)
void Desenha(void)
{
int j;
const MAX = 200;
float z;

glColor3f(0.1f, 0.1f, 0.1f);
glPointSize(4);

glBegin(GL_POINTS);
for (j=0; j<MAX; j++) {
z = sin((float) j/20)
glVertex3d(j, 0, z);
}
glEnd();

glBegin(GL_LINE_STRIP);
for (j=0; j<MAX; j++) {
z = sin((float)j/20);
glVertex3d(j, 0, z)
}
glEnd();
glutSwapBuffers();
}

void init(void)
{
(...)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-40, 40, -40, 40, 100, 2500);
glMatrixMode(GL_MODELVIEW);
glTranslated(0, -50, -300);
(...)
}
(...)

O erro ocorre na Compilação referente a variável lt ( j&lt ), ( undefined symbol )... ai é que vem a dúvida; não entendi muito a estrutura desta sixtax, e ela teria que ser declarada, ou faz parte de alguma biblioteca que precisa ser declarada no programa? como disse, C++ pra mim é novo, e ainda estou prucurando entender melhor a ferramenta.

Obrigado...

_________________
José Aparecido


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qua Jul 21, 2010 2:33 pm 
Offline
Membro intermediário
Avatar do usuário

Registrado em: Qui Nov 12, 2009 8:34 pm
Mensagens: 97
Entendo, boa sorte no teu projeto.

Olha, Não sei que linguagens vc programou antes de C++,
mas vou te dar um conselho.
C++ é a linguagem mais proxima do nivel de hardware que é atualmente usada (Ninguem programa mais em Assembly, apesar de poder se programar em Assembly no meio do C++).

Isso quer dizer que o nivel de complexidade em relação as demais linguagens é maior. Por exemplo, Java, Python, Smalltalk, C# trabalham com garbage collector e são interpretadas (menos C#).
Em C++ é voce quem administra sua memoria e cuida da eficiencia.
Por isso que essa linguagem brutalmente mais eficiente e rápida que as demais.
Por exemplo, Windows Vista foi feito em C#, deu no que deu...
Ja o Windows 7 resolveram fazer direito em C++ e ficou bem mais eficiente.

Contúdo vc não vai poder ficar só nos códigos exemplos, se eu fosse vc, eu procurava livros e referencias mais profundas.
Afinal um algoritmo X em Java não possui muitas possibilidades de se fazer de forma deferente, por isso um exemplo ja basta pra entender.
Ja em C++ da pra voce fazer um mesmo algoritmo das mais diversas otmizações possiveis: referencias, templates, functores, pré-processamento....

OpenGL então é mais complicado ainda, mexe diretamente com o processamento de video o que força vc a aprender conceitos mais profundos de Computação Gráfica.

Sobre seu código não compilar:

Isso foi feito em C não em C++ (apesar de poder compilar em C++).

o for está errado.
Código:
for (j=0; j<MAX; j++)


hahahahah...O que tentaram fazer aqui eu não sei "j<MAX"

É só colocar a condição correta no for:
Código:
for (j=0; j < MAX; j++)


Obs: de um otimizada nisso, se vc quer programar em C++ não em C faça assim:
Código:
for (register int j=0; j < MAX; ++j)


j foi declarado dentro do for, ao contrario do C, em C++ vc pode declarar variaveis em qualquer lugar.
Então apague a linha da declaração de lá em cima.

_________________
Alexandre (Abdalla) Cardoso.

Antigo Portifolio:
http://www.dcc.ufrj.br/~abdalla
(o novo ainda está em construção)


Voltar ao topo
 Perfil  
 
 Título: Onda Senoidal com OpenGL
MensagemEnviado: Qua Jul 21, 2010 4:05 pm 
Offline
Membro novo

Registrado em: Ter Jul 20, 2010 1:24 pm
Mensagens: 3
OK Alexandre, obrigado pelas dicas...

Quanto a programação, atualmente programo em Clipper e Delphi, comecei com Cobol e "passei" pelo Visual Basic, portanto todas linguagens de alto nível...

Quanto ao Curso de C++, utlizei o Borland 5.2 e C++Builder, deu pra ter uma idéia desta diferença, tenho um material razoável para pesquisa e acredito que na medida que precisar resolver os problemas vou me aprofundando...

Valeu também por ajudar resolver o problema do for...

Mais uma vez obrigado.

_________________
José Aparecido


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 5 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante


Enviar mensagens: Proibido
Responder mensagens: Proibido
Editar mensagens: Proibido
Excluir mensagens: Proibido
Enviar anexos: Proibido

Ir para:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB