资源简介
C/C++基于openGl的画直线和三角形光栅化源码加实验报告
实现鼠标选点操作 完整源码 加 完整实验报告
代码片段和文件信息
#include
#include
#include
using namespace std;
int x0y0x1y1x2y2dxy;
float m=0.0;
int mouse=0;
int number=0;
class point
{
public:
int x0;
int y0;
int x1;
int y1;
};
class triangle
{
public:
int x0;
int y0;
int x1;
int y1;
int x2;
int y2;
};
point sz;
triangle sz1;
//int number=0;//记录线的条数
//画点
void drawpoint(int xint y)
{
glBegin(GL_POINTS);
glVertex2d(xy);
glEnd();
}
//0 void drawline1(int xint yint d)
{ y=y0;
for( x = x0; x < x1; x++ ) {
drawpoint( x y );
if( d < 0 ) {
y = y + 1;
d = d + 2 * (x1-x0) + 2 * (y0-y1);
}
else {
d = d + 2 * ( y0 - y1 );
}
}
}
//m>1
void drawline2(int xint yint d)
{ x=x0;
for( y = y0; y < y1; y++ ) {
drawpoint( x y );
if( d < 0 ) {
x = x + 1;
d = d + 2 * (y1-y0) + 2 * (x0-x1);
}
else {
d = d + 2 * ( x0 - x1 );
}
}
}
//-1<=m<0
void drawline3(int xint yint d)
{
y=y0;
for( x = x0; x > x1; x--)
{
drawpoint( x y );
if( d < 0 ) {
y = y + 1;
d = d + 2 * (x0-x1) + 2 * (y0-y1);
}
else {
d = d + 2 * ( y0 - y1 );
}
}
}
//m<-1
void drawline4(int xint yint d)
{ x=x0;
for( y = y0; y < y1; y++ ) {
drawpoint( x y );
if( d < 0 ) {
x = x - 1;
d = d+ 2*(y1-y0)+ 2*(x1-x0);
}
else {
d = d + 2*(x1-x0);
}
}
}
//y0=y1 画横线
void drawline5(int xint yint d)
{ if( x0 > x1 ) {
int temp = x0;
x0 = x1;
x1 = temp;
}
y=y0;
for(x=x0;x drawpoint( x y );
}
//x0=x1 画竖线
void drawline6(int xint yint d)
{ if( y0 > y1 ) {
int temp = y0;
y0 = y1;
y1 = temp;
}
x=x0;
for(y=y0;y drawpoint( x y );
}
//整合画直线函数
void drawline(int xint yint xxint yy)
{
glColor3f (1.0 1.0 1.0);
x0=x;y0=y;x1=xx;y1=yy;
int temp;
if( y0 > y1 ) {
temp = y0;
y0 = y1;
y1 = temp;
temp = x0;
x0 = x1;
x1 = temp;
}
d = 2 * ( y1 - y0 - ( x1 - x0 ) );
m=(float)(y1-y0)/(x1-x0);
if(x0==x1)
drawline6(xy d);
else if(y0==y1)
drawline5( x y d);
else
if(m>1)
drawline2( x y d);
else
if (m>0)
drawline1( x y d);
else
if (m>-1)
drawline3( x y d);
else
drawline4(x y d);
}
//画三角形
int find(int a[]int countint b)
{
int iflag;
flag=a[0];
if(b==0)
{
for(i=0;i {
if(a[i] flag=a[i];
}
}
if(b==1)
{
for(i=0;i {
if(a[i]>flag)
flag=a[i];
}
}
return flag;
}
void drawtriangle(int x0int y0int x1int y1int x2int y2)
{
//找到最大最小横纵坐标
int a[3]b[3];
a[0]=x0;
a[1]=x1;
a[2]=x2;
b[0]=y0;
b[1]=y1;
b[2]=y2;
int xMinxMaxyMinyMax;
xMin=find(a30);
xMax=find(a31);
yMin=find(b30);
yMax=find(b31);
//计算常量
float ABC;
int f01f02;
f01=(y0-y1)*x2+(x1-x0)*y2+x0*y1-x1*y0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-10-11 15:20 基于openGl的画直线和三角形 光栅化源码加实验报告\
文件 6543 2011-09-30 17:14 基于openGl的画直线和三角形 光栅化源码加实验报告\Simple.cpp
文件 139264 2011-09-30 17:18 基于openGl的画直线和三角形 光栅化源码加实验报告\实验二 直线和三角形光栅化算法报告.doc
- 上一篇:数据结构课程设计 排序综合(C++)
- 下一篇:自适应模糊PID代码 C++实现
相关资源
- opengl+mfc画线填充左键单击绘包围线、
- vs mfc opengl配置教程
- OpenGL实现模拟瀑布的粒子系统
- OpenGL安装包加配置 一看就懂
- 基于OPENGL的C语言大作业
- OpenGL 立体五角星 绘制
- 用opengl实现分形山
- 计算机图形学VSC++生成时钟报告含代码
- 山东大学图像学实验openGL读取off文件
- VC++ OpenGL三维物体建模--雨伞的绘制(
- 地球绕着太阳转,月亮绕着地球转
- 配置OpenGL所需文件全
- 软件测试实验报告——三角形问题
- 用C++ 和opengl实现多个雪人,而且可以
- OpenGL 真实感图形编程C++实现
- opengl动态显示贝塞尔曲线
- opengl绘制行星两个行星一个恒星
- vc++ opengl 下雪场景实现
- 基于OpenGL的音乐可视化、频谱图
- OpenGL开发库含VC和VS配置方法全
- 计算机图形学考试内容-Opengl-会移动的
- 利用opengl 组件的基础上使用VC++编写的
- opengl鼠标交互简单
- 基于 OPENCV 对三角形 的 角度检测
- opengl 实现 雪花
- opengl实现鼠标坐标的显示
- 贝塞尔曲面 vc++ opengl
- c++写的OpenGL程序透明金字塔有加上光
- OpenGl文字显示c++类
- C++ 3D 五子棋 opengl
评论
共有 条评论