计算机图形学OpenGL作业之画直线 / 画圆 / 画椭圆

这篇博客主要介绍了OpenGL中的图形流水线理解,特别是坐标系的概念,以及如何使用中点BH算法绘制直线、圆。博主分享了圆的推导过程和图像,同时提到椭圆的绘制,虽然未详细推导,但参照了书本。文章最后,作者阐述了对世界坐标系的理解,并提及glOrtho()函数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最难的还是理解图形流水线,今天理解了一下坐标系

三次的代码合在一起

#include<GL/glut.h>
#include<iostream>
using namespace std;

void bresenham_line(int x0, int y0, int x1, int y1);
void bresenham_circle(int r);
void bresenham_ellipse(int a, int b);

void initial()
{
	glClearColor(1.0, 1.0, 1.0, 1.0);
	glMatrixMode(GL_PROJECTION);
	gluOrtho2D(-50, 50, -50, 50);					//这个很重要关于坐标系,后面详写
	//glOrtho(-10.0, 10.0, -10.0, 10.0, -1.0, 1.0);
}
void display()
{
	//int x0 = 0;					//直线数据
	//int y0 = 0;
	//int x1 = 5;
	//int y1 = 8;
	//int r = 20;					//圆的半径
	int a = 16;						//椭圆长短轴
	int b = 9;
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(0.0, 0.0, 0.0);

	/*glBegin(GL_LINES);			//由起点终点确定的直线
	glVertex2i(x0, y0);
	glVertex2i(x1, y1);
	glEnd();*/
	glBegin(GL_LINES);				//x轴
	glVertex2i(-50,0);
	glVertex2i(50, 0);
	glEnd();

	glBegin(GL_LINES);				//y轴
	glVertex2i(0, 50);
	glVertex2i(0, -50);
	glEnd();

	glColor3f(1.0, 0.0, 0.0);	   //BH算法
	glPointSize(2.0);
	glBegin(GL_POINTS);
	//
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值