• 大小: 6.72MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-01
  • 语言: C/C++
  • 标签: 图形学    Bresenham  

资源简介

支持Visual Studio 2013 及以上版本,c语言实现代码,中点算法及Bresenham算法画圆,中点算法画椭圆,鼠标的交互方式利用OpenGL实现。

资源截图

代码片段和文件信息

#include   
#include   
#include  
#include 
int xStart = 0 yStart = 0xEnd = 0 yEnd = 0R = 0A=0B=0;
int count = 0;
void init()
{
glClearColor(0.0 0.0 0.0 0.0);
glMatrixMode(GL_PROJECTION);
//gluOrtho2D(06000600);
gluOrtho2D(-300 300 -300 300);
}
void  draw_pixel(float x float y)
{
glBegin(GL_POINTS);
glVertex2f(x y);
glEnd();
glFlush();//强制刷新缓冲
}
void CirclePoints(int xc int yc int x int y){
if (x != y){
draw_pixel(xc + x yc + y);
draw_pixel(xc - x yc + y);
draw_pixel(xc + x yc - y);
draw_pixel(xc - x yc - y);
draw_pixel(xc + y yc + x);
draw_pixel(xc - y yc + x);
draw_pixel(xc + y yc - x);
draw_pixel(xc - y yc - x);
}
else{
draw_pixel(xc + x yc + y);
draw_pixel(xc - x yc + y);
draw_pixel(xc + x yc - y);
draw_pixel(xc - x yc - y);
}

}
void ellipseplotPoints(int Xcenter int yCenter int x int y)
{
draw_pixel(Xcenter + x yCenter + y);
draw_pixel(Xcenter - x yCenter + y);
draw_pixel(Xcenter + x yCenter - y);
draw_pixel(Xcenter - x yCenter - y);
}
void Bresenhamcircle(int x0int y0 int radius)
{
glColor3f(0.0 1.0 0.0);
glPointSize(2.0);
int x y d;
x = 0;
y = radius;
d = 3 - 2 * radius;
while (x {
CirclePoints(x0 y0 x y);
if (d < 0){
d = d + 4 * x + 6;
}
else
{
d = d + 4 * (x - y) + 10;
y -= 1;
}
x += 1;
}
if (x == y)
{
CirclePoints(x0 y0 x y);
}
}
void MidPointCircle(int x0 int y0 int radius)
{
glColor3f(1.0 0.0 0.0);
glPointSize(1.0);//指定栅格化点的直径
int x = 0;
int y = radius;
int d = 1 - radius;
CirclePoints(x0 y0 x y);
while (y>x)
{
if (d < 0) {
d += 2 * x + 3;
}
else  {
d += 2 * (x - y) + 5;
y--;
}
x++;
CirclePoints(x0 y0 x y);
}
}
void MidpointEllipe(int x0 int y0 int a int b)
{
glColor3f(0.0 0.0 1.0);
glPointSize(1.0);
int x y;
float d1 d2;
x = 0; y = b;
d1 = b*b + a*a*(-b + 0.25);
ellipseplotPoints(x0 y0 x y);
while (b*b*(x + 1) < a*a*(y - 0.5))
{
if (d1<0){
d1 += b*b*(2 * x + 3);
x++;
}
else  {
d1 += (b*b*(2 * x + 3) + a*a*(-2 * y + 2));
x++;
y--;
}
ellipseplotPoints(x0 y0 x y);
}
d2 = sqrt(b*(x + 0.5)) + sqrt(float(a*(y - 1))) - sqrt(float(a*b));
while (y >0)
{
if (d2 <0) {
d2 += b*b*(2 * x + 2) + a*a*(-2 * y + 3);
x++;
y--;
}
else  {
d2 += a*a*(-2 * y + 3);
y--;
}
ellipseplotPoints(x0 y0 x y);
}
}
void mymouse(int button int state int x int y){

if (state == GLUT_UP){
if (count == 0){
xStart = x-300;
yStart = 300 - y;
draw_pixel(xStart yStart);
printf(“圆心坐标为%d %d \n“ xStart yStart);
count++;
}
else if (count == 1){
xEnd = x-300;
yEnd = 300 - y;
printf(“另一点坐标为%d %d \n“ xEnd yEnd);
R = sqrt((float)(abs(yEnd - yStart)*abs(yEnd - yStart)) + (float)(abs(xEnd - xStart)*abs(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      43008  2018-04-10 20:27  DrawYuan2\Debug\DrawYuan2.exe

     文件     468556  2018-04-10 20:27  DrawYuan2\Debug\DrawYuan2.ilk

     文件     961536  2018-04-10 20:27  DrawYuan2\Debug\DrawYuan2.pdb

     文件       2224  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.log

     文件      23375  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.obj

     文件        618  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog\cl.command.1.tlog

     文件      29472  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog\CL.read.1.tlog

     文件        416  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog\CL.write.1.tlog

     文件        175  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog\DrawYuan2.lastbuildstate

     文件       1086  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog\link.command.1.tlog

     文件       2966  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog\link.read.1.tlog

     文件        384  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog\link.write.1.tlog

     文件     338944  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\vc120.idb

     文件     339968  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\vc120.pdb

     文件       4667  2018-04-10 20:27  DrawYuan2\DrawYuan2\DrawYuan2.cpp

     文件       4025  2018-04-09 19:09  DrawYuan2\DrawYuan2\DrawYuan2.vcxproj

     文件        950  2018-04-09 19:09  DrawYuan2\DrawYuan2\DrawYuan2.vcxproj.filters

     文件   35979264  2018-04-24 20:58  DrawYuan2\DrawYuan2.sdf

     文件        973  2018-04-09 19:04  DrawYuan2\DrawYuan2.sln

    ..A..H.     20480  2018-04-24 20:58  DrawYuan2\DrawYuan2.v12.suo

     目录          0  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug\DrawYuan2.tlog

     目录          0  2018-04-10 20:27  DrawYuan2\DrawYuan2\Debug

     目录          0  2018-04-09 23:50  DrawYuan2\Debug

     目录          0  2018-04-10 20:27  DrawYuan2\DrawYuan2

     目录          0  2018-04-24 20:58  DrawYuan2

----------- ---------  ---------- -----  ----

             38223087                    25


评论

共有 条评论