Buscar

Algoritmo Poli-linea


Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include "windows.h"
#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glut.h"
#include "stdio.h"
void putpixel(double x, double y);
void breseham(double x0, double y0, double x1, double y1);
void DDA(double x1, double y1, double x2, double y2);
void DesenhaPlano(void);
void Desenha(void);
// FUNCAO BRESEHAM
void breseham(double x0, double y0, double x1, double y1){
	double Dx, Dy, p, p2, xy2, x, y, xf;
	Dx = x1 - x0;
	Dy = y1 - y0;
	/* IMPLEMENTAR PARA O DIA DA PROVA
		** [ DDA, POLILINEA, BRESEHAM ]
		* Tem que funcionar mais de 45 graus
		em linhas verticais e horizontais
	*/
	p = 2*Dy - Dx;
	p2 = 2*Dy;
	xy2 = 2*(Dy - Dx);
	// DEIXAR IMPLEMENTADO
	// Reta Vertical
	if (x0 == x1){
		for (y=y0; y<=y1; y++){
			putpixel(x0, y);
		}
	}
	// Reta --------
	if (y0 == y1){
		for (x=x0; x<=x1; x++){
			putpixel(x, y0);
		}
	}
	//
	if (x0 > x1){
		/* code */
		x = x1;
		y = y1;
		xf = x0;
	}
	else{
		/* code */
		x = x0;
		y = y0;
		xf = x1;
	}
	putpixel(x, y);
	while(x < xf){
		x = x+1;
		if (p<0){
			/* code */
			p = p + p2;
		}
		else{
			y = y+1;
			p = p + xy2;
		}
		putpixel(x, y);
	}
}
// Função pintar o pixel!!
void putpixel(double x, double y){
	// Especifica que a cor corrente é vermelha
	// RGB
	glColor3f(1.0f, 0.0f, 0.0f);	// cor ponto
	glBegin(GL_POINTS);
	//define os pontos
	// round(y);
	glVertex2f(x, y);
	glEnd();
};
// Função DDA
void DDA(double x1, double y1, double x2, double y2){
	double x, y;
	double m;
	m = (y2 - y1)/(x2 - x1);
	for (x = x1; x < x2; x++){
		y = y1 + m*(x - x1);
		putpixel(x, y);
	};
};
void polilinha(){
	glColor3f(1.0f, 0.0f, 0.0f);	// Cor ponto
	glBegin(GL_LINE_STRIP);
	//glVertex2f(10, 10);
	glVertex2f(0, 10);
	glVertex2f(10, 20);
	glVertex2f(15, 20);
	glVertex2f(20, 40);
	glEnd();
};
void DesenhaPlano(void){
	glColor3f(1, 1, 0);		// Cor da linha
	glLineWidth(3.0);		// Espessura da linha
	glBegin(GL_LINES);
	glVertex3f(-500, 0, 0);
	glVertex3f(500, 0, 0);
	glVertex3f(0, -500, 0);
	glVertex3f(0, 500, 0);
	glEnd();
};
// Função callback chamada para fazer o desenho
void Desenha(void){
	// Limpa a janela de visualização com a cor de fundo especificada
	glClear(GL_COLOR_BUFFER_BIT);
	DesenhaPlano();			// Desenha plano cartesiano
	DDA(0, 0, 5, 5);		// Algoritmo DDA(0.0, 0.0, 5.0, 5.0)
	glFlush();
};
// Programa Principal
int main(void){
	/* code */
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(1000, 1000);				// tamanho da janela
	glutInitWindowPosition(100, 100);			// localização que a janela abrirá
	glutCreateWindow("Computação Gráfica");		// Nome da Janela
	glClearColor(0.0, 0.0, 0.0, 0.0);			// Cor Fundo da tela - Preto
	glPointSize(5.0);							// seta o tamanho do ponto
	gluOrtho2D(-50.0, 50.0, -50.0, 50.0);		// é usada para determinar que...
	glutDisplayFunc(Desenha);					// Chama a função principal
	glutMainLoop();
	//breseham(20, 10, 30, 18);
	polilinha();
	//return 0;
};

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando