计算机图形学实验二:圆的中点坐标算法+Bresenham算法及椭圆的中点坐标算法实现

本博客提供计算机图形学实验的代码,包括圆的中点坐标算法和Bresenham算法,以及椭圆的中点坐标算法。博主建议理解算法原理,并提到代码采用坐标放大方法,虽然解释器运行可能稍显复杂,但可以作为参考和借鉴。
摘要由CSDN通过智能技术生成

计算机图形学实验二:圆的中点坐标算法+Bresenham算法及椭圆的中点坐标算法

解救众多被计算机图形学实验所困扰的学生党们,本博客仅粘贴代码,圆的中点坐标算法+Bresenham算法及椭圆的中点坐标算法的原理请自行百度或Google,网上从来不缺原理。
ps :本代码属于硬核坐标放大,改进版坐标放大的方法请看博主另一篇博客计算机图形学实验三:多边形填充算法之活性边表方法实现中的坐标放大方法,比这里面的放大方法好了不下100倍!只是博主做完实验一身轻松,就不想再倒回去折腾了,你们就自己动手改吧,不然就用我这个硬核坐标放大也是没有问题的,就是解释器爱稍微麻烦了一点。

代码在此,参考为上,借鉴最佳

#include "pch.h"
#include <iostream>
#include<GL/glut.h>
#include<math.h>
#include<Windows.h>

const int WindowWidth = 800, WindowHeight = 800;
//中点坐标画圆算法
void CenterCircle(int x0, int y0, int r) {
    //x0,y0,x1,y1是圆点坐标,椭圆没有考虑,但方法一样,很简单
	int x1 = 0, y1 = r * 20;
	int dk = 500 - y1 * 20;   //dk = 1.25 - y1   <-    dk = 2x1 - y1 + 1.25
	int x2 = x1, y2 = y1;
	int tempx = x2, tempy = y2;
	glVertex2i(x2 + x0 * 20, y2 + y0 * 20);
	glVertex2i(-x2 + x0 * 20, -y2 + y0 * 20);
	glVertex2i(y2 + x0 * 20, x2 + y0 * 20);
	glVertex2i(-y2 + x0 * 20, -x2 + y0 * 20);
	glVertex2i(x2 + x0 * 20, -y2 + y0 * 20);
	glVertex2i(-x2 + x0 * 20, y2 + y0 * 20);
	glVertex2i(y2 + x0 * 20, -x2 + y0 * 20);
	glVertex2i(-y2 + x0 * 20, x2 + y0 * 20);
	for (; x2 <= y2 ;) {
   
		if (dk < 0) {
   
			tempx = x2, tempy = y2;
			x2 = x2 + 20;
			glVertex2i(x2 + x0 * 20, y2 + y0 * 20);
			glVertex2i(-x2 + x0 * 20, -y2 + y0 * 20);
			glVertex2i(y2 + x0 * 20, x2 + y0 * 20);
			glVertex2i(-y2 + x0 * 20, -x2 + y0 * 20);
			glVertex2i(x2 + x0 * 20, -y2 + y0 * 20);
			glVertex2i(-x2 + x0 * 20, y2 + y0 * 20);
			glVertex2i(y2 + x0 * 20, -x2 + y0 * 20);
			glVertex2i(-y2 + x0 * 20, x2 + y0 * 20);
			dk = dk + 40 * tempx + 1200;    //dk = dk + 2 * tempx + 3
		}
		else {
   
			tempx = x2, tempy = y2;
			x2 = x2 + 20;
			y2 = y2 - 20;
			glVertex2i(x2 + x0 * 20, y2 + y0 * 20);
			glVertex2i(-x2 + x0 * 20, -y2 + y0 * 20);
			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值