Enviado em 24/04/2021 - 19:33h
Boa noite a todos.//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <GL/glut.h>
#include <math.h>
int n_stars;
GLdouble theta, wTamPad = 10, wCentX, wCentY, Wh = 10;
// GLdouble theta, wTamPad = 10, wCentX = 50, wCentY = 200, Wh = 10;
struct Ponto {
float x;
float y;
};
struct Ponto v[6];
static void init(void) {
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0, 400, 0, 400);
}
//Gera cor aleatoria para cada componente da função glColor3f
float gerar_cores() {
float cor_f;
int gerado;
srand(time(NULL));
gerado = rand() % 101;
cor_f = (float)gerado/100;
return cor_f;
}
void drawStars(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// for(int i = 0; i < n_stars; i++) {
//glColor3f(1.0, 0.5, 0.8);
glColor3f(0.5, gerar_cores(), 1.0);
GLint k;
theta = (6.2831853 / 6);
for (k = 0; k < 6; k++) {
v[k].x = wCentX + cos(theta * k) * wTamPad;
v[k].y = wCentY + sin(theta * k) * wTamPad;
};
float d = (v[1].x - v[2].x)/2;
float dp = sqrt(pow(d,2)+pow(Wh,2));
glBegin(GL_POLYGON);
glVertex2f(v[0].x,v[0].y);
glVertex2f(v[1].x + dp, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(wCentX, v[1].y+Wh);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x - dp, v[2].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[2].x - dp, v[4].y);
glVertex2f(v[4].x, v[4].y);
//glVertex2f(v[4].x, v[4].y);
//glVertex2f(wCentX, v[4].y - Wh);
//glVertex2f(v[5].x, v[5].y);
//
glVertex2f(v[5].x, v[5].y);
glVertex2f(v[5].x + dp, v[5].y);
glVertex2f(v[0].x, v[0].y);
glEnd();
glFlush();
// }
}
// void display() {
// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// for (int i = 0; i < n_stars; i++)
// {
// drawStars();
// }
// }
// Programa Principal
int main(int argc, char** argv)
{
printf( "n = " );
scanf( "%d", &n_stars );
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(0, 0);
glutInitWindowSize(1280, 780);
glutCreateWindow("Draw Stars");
init();
// ---------------------------------------------------------------
for (int i = 0; i < n_stars; i++)
{
printf( "xc = " );
scanf( "%le", &wCentX );
printf( "yc = " );
scanf( "%le", &wCentY );
glutDisplayFunc(drawStars);
}
// ---------------------------------------------------------------
// glutDisplayFunc(drawStars);
glutMainLoop();
return 0;
}
Enviado em 24/04/2021 - 20:15h
Troque o callback do glutDisplayFunc por esse código:
// aproveitando seu código anterior que tava comentado
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < n_stars; i++)
{
printf( "xc = " );
scanf( "%le", &wCentX );
printf( "yc = " );
scanf( "%le", &wCentY );
drawStars();
}
}
// no main coloque assim:
glutDisplayFunc(display);
Enviado em 24/04/2021 - 22:05h
// aproveitando seu código anterior que tava comentado
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < n_stars; i++)
{
printf( "xc = " );
scanf( "%le", &wCentX );
printf( "yc = " );
scanf( "%le", &wCentY );
drawStars();
}
}
// no main coloque assim:
glutDisplayFunc(display);
Enviado em 24/04/2021 - 22:38h
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <GL/glut.h>
#include <math.h>
int n_stars;
GLdouble theta, wTamPad = 10, wCentX, wCentY, Wh = 10;
// GLdouble theta, wTamPad = 10, wCentX = 50, wCentY = 200, Wh = 10;
struct Ponto {
float x;
float y;
};
struct Ponto v[6];
static void init(void) {
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0, 400, 0, 400);
}
//Gera cor aleatoria para cada componente da função glColor3f
float gerar_cores() {
float cor_f;
int gerado;
srand(time(NULL));
gerado = rand() % 101;
cor_f = (float)gerado/100;
return cor_f;
}
void drawStars(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// for(int i = 0; i < n_stars; i++) {
//glColor3f(1.0, 0.5, 0.8);
glColor3f(0.5, gerar_cores(), 1.0);
GLint k;
theta = (6.2831853 / 6);
for (k = 0; k < 6; k++) {
v[k].x = wCentX + cos(theta * k) * wTamPad;
v[k].y = wCentY + sin(theta * k) * wTamPad;
};
float d = (v[1].x - v[2].x)/2;
float dp = sqrt(pow(d,2)+pow(Wh,2));
glBegin(GL_POLYGON);
glVertex2f(v[0].x,v[0].y);
glVertex2f(v[1].x + dp, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(wCentX, v[1].y+Wh);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x - dp, v[2].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[2].x - dp, v[4].y);
glVertex2f(v[4].x, v[4].y);
//glVertex2f(v[4].x, v[4].y);
//glVertex2f(wCentX, v[4].y - Wh);
//glVertex2f(v[5].x, v[5].y);
//
glVertex2f(v[5].x, v[5].y);
glVertex2f(v[5].x + dp, v[5].y);
glVertex2f(v[0].x, v[0].y);
glEnd();
glFlush();
// }
}
// aproveitando seu código anterior que tava comentado
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < n_stars; i++)
{
printf( "xc = " );
scanf( "%le", &wCentX );
printf( "yc = " );
scanf( "%le", &wCentY );
drawStars();
}
}
// Programa Principal
int main(int argc, char** argv)
{
printf( "n = " );
scanf( "%d", &n_stars );
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(0, 0);
glutInitWindowSize(1280, 780);
glutCreateWindow("Draw Stars");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Enviado em 25/04/2021 - 09:23h
// aproveitando seu código anterior que tava comentado
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < n_stars; i++)
{
printf( "xc = " );
scanf( "%le", &wCentX );
printf( "yc = " );
scanf( "%le", &wCentY );
drawStars();
}
}
// no main coloque assim:
glutDisplayFunc(display);
Enviado em 25/04/2021 - 09:32h
// aproveitando seu código anterior que tava comentado
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < n_stars; i++)
{
printf( "xc = " );
scanf( "%le", &wCentX );
printf( "yc = " );
scanf( "%le", &wCentY );
drawStars();
}
}
// no main coloque assim:
glutDisplayFunc(display);
Enviado em 25/04/2021 - 16:10h
// aproveitando seu código anterior que tava comentado
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
drawStars();
}
Enviado em 25/04/2021 - 16:48h
Perae agora que vi, tu não tá armazenando os centros unm vetor. Precisa armazenar cada centro de cada estrela e depois desenhar conforme o centro atual.Enviado em 25/04/2021 - 18:27h
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <GL/glut.h>
#include <math.h>
int n_stars;
GLdouble theta, wTamPad = 10, wCentX, wCentY, Wh = 10;
// GLdouble theta, wTamPad = 10, wCentX = 50, wCentY = 200, Wh = 10;
struct Ponto {
float x;
float y;
};
struct Ponto v[6];
static void init() {
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0, 400, 0, 400);
// gluOrtho2D(-400, 400, -400, 400);
}
//Gera cor aleatoria para cada componente da função glColor3f
float gerar_cores() {
float cor_f;
int gerado;
srand(time(NULL));
gerado = rand() % 101;
cor_f = (float)gerado/100;
return cor_f;
}
int gerar_coordenada_aleatoria() {
int coordenada;
srand(time(NULL));
coordenada = 50 + (rand() % 150);
return coordenada;
}
void drawStars(void) {
// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0.5, gerar_cores(), 1.0);
wCentX = gerar_coordenada_aleatoria();
wCentY = gerar_coordenada_aleatoria();
GLint k;
theta = (6.2831853 / 6);
for (k = 0; k < 6; k++) {
v[k].x = wCentX + cos(theta * k) * wTamPad;
v[k].y = wCentY + sin(theta * k) * wTamPad;
};
float d = (v[1].x - v[2].x)/2;
float dp = sqrt(pow(d,2)+pow(Wh,2));
glBegin(GL_POLYGON);
glVertex2f(v[0].x,v[0].y);
glVertex2f(v[1].x + dp, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(wCentX, v[1].y+Wh);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x - dp, v[2].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[2].x - dp, v[4].y);
glVertex2f(v[4].x, v[4].y);
glVertex2f(v[5].x, v[5].y);
glVertex2f(v[5].x + dp, v[5].y);
glVertex2f(v[0].x, v[0].y);
// }
glEnd();
glFlush();
// }
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < n_stars; i++)
{
// printf( "xc = " );
// scanf( "%le", &wCentX );
// printf( "yc = " );
// scanf( "%le", &wCentY );
drawStars();
}
}
// Programa Principal
int main(int argc, char** argv)
{
printf( "n = " );
scanf( "%d", &n_stars );
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(0, 0);
glutInitWindowSize(1280, 780);
glutCreateWindow("Draw Stars");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Enviado em 25/04/2021 - 18:55h
Olhai em baixo, eu dei uma ajeitada nas funções de desenho. o glFlush deve ser executado sempre por último DEPOIS de desenhar tudo na tela.
void drawStars(void) {
// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0.5, gerar_cores(), 1.0);
wCentX = gerar_coordenada_aleatoria();
wCentY = gerar_coordenada_aleatoria();
GLint k;
theta = (6.2831853 / 6);
for (k = 0; k < 6; k++) {
v[k].x = cos(theta * k) * wTamPad;
v[k].y = sin(theta * k) * wTamPad;
};
float d = (v[1].x - v[2].x)/2;
float dp = sqrt(pow(d,2)+pow(Wh,2));
glPushMatrix();
glTranslatef(wCentX, wCentY, 0);
glBegin(GL_POLYGON);
glVertex2f(v[0].x,v[0].y);
glVertex2f(v[1].x + dp, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(v[1].x, v[1].y);
glVertex2f(wCentX, v[1].y+Wh);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x, v[2].y);
glVertex2f(v[2].x - dp, v[2].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[3].x, v[3].y);
glVertex2f(v[2].x - dp, v[4].y);
glVertex2f(v[4].x, v[4].y);
glVertex2f(v[5].x, v[5].y);
glVertex2f(v[5].x + dp, v[5].y);
glVertex2f(v[0].x, v[0].y);
// }
glEnd();
glPopMatrix();
// }
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < n_stars; i++)
{
// printf( "xc = " );
// scanf( "%le", &wCentX );
// printf( "yc = " );
// scanf( "%le", &wCentY );
drawStars();
}
glFlush();
}
Enviado em 25/04/2021 - 19:16h
Instalação do Ambiente .NET (#C) no Slackware 15.0
Kali On The Box - Colocando o Kali para rodar no Raspberry Pi
Como contribuir com a atualização de pacotes no Void Linux
Como Remover CTRL-M (^M) de arquivos
ERROR 144 - Table XXX is marked as crashed and last (automatic?) repair failed [Resolvido]
Colocar dispositivo móvel Samsung em modo Download pela linha de comando
tem como "rolar pra cima" numa TTY? [RESOLVIDO] (5)
TWM é perda de tempo ou não? [RESOLVIDO] (9)
Deletei minha barra de tarefas no Ubuntu Studio (1)
O meu notebook linux com a distro ubuntu não esta saindo som de jeito ... (6)