资源简介
适合学习计算机图形学的同学,比较完整的代码,并且是正确的。

代码片段和文件信息
/************************************************************************/
/* KOCH曲线:C++/OpenGL实现(以直线为初始图形) */
/* 作者:刘畅 2009年11月3日 ****/
/************************************************************************/
#include
#include
#include
#include
#define PI 3.1415926
using namespace std;
struct Point
{
float x;
float y;
};
static vector count1count2count3;
const Point first = {-0.5f0.1f}end = {0.5f0.1f}second = {0.0f-0.766f};
static int m = 0; //迭代次数
float line ;
void first_state(vector &count1vector &count2vector &count3) //初始情况是只有两个点
{
line = sqrt( pow(first.x - end.x2) + pow(first.y - end.y2) );
count1.push_back(first);
count1.push_back(end);
count2.push_back(end);
count2.push_back(second);
count3.push_back(second);
count3.push_back(first);
}
void Draw_pic(vector &count1)
{
for (vector::size_type i = 0; i != (count1.size()-1) ; i++)
{
glBegin(GL_LINES);
glVertex2f(count1[i].x count1[i].y);
glVertex2f(count1[i+1].x count1[i+1].y);
glEnd();
}
for (vector::size_type i = 0; i != (count2.size()-1) ; i++)
{
glBegin(GL_LINES);
glVertex2f(count2[i].x count2[i].y);
glVertex2f(count2[i+1].x count2[i+1].y);
glEnd();
}
for (vector::size_type i = 0; i != (count3.size()-1) ; i++)
{
glBegin(GL_LINES);
glVertex2f(count3[i].x count3[i].y);
glVertex2f(count3[i+1].x count3[i+1].y);
glEnd();
}
}
void Calculate_point(vector &count1)
{
vector new_count;
float pline = line /(float) pow((float)3(int)m) ;
vector::size_type i;
for ( i= 0; i != (count1.size() - 1); i++ )
{
Point p1 p2 pmid;
p1.x = count1[i].x + (count1[i+1].x - count1[i].x) / 3;
p1.y = count1[i].y + (count1[i+1].y - count1[i].y) / 3;
p2.x = count1[i+1].x - (count1[i+1].x - count1[i].x) / 3;
p2.y = count1[i+1].y - (count1[i+1].y - count1[i].y) / 3;
//mark count[i+1].x < count[i].x情况下不成立
double alpha = 0.0;
if (count1[i+1].y >= count1[i].y)
{
alpha = atan((double) (count1[i+1].y - count1[i].y) / (count1[i+1].x - count1[i].x) );
if (count1[i+1].x > count1[i].x)
{
pmid.x = p1.x + pline * cos(alpha + PI / 3);
pmid.y = p1.y + pline * sin(alpha + PI / 3);
}
else
{
pmid.x = p1.x - pline * cos(alpha + PI / 3);
pmid.y = p1.y - pline * sin(alpha + PI / 3);
}
}
else
{
alpha = atan((double) (count1[i].y - count1[i+1].y) / (count1[i+1].x - count1[i].x) );
if (count1[i+1].x > count1[i].x)
{
pmid.x = p2.x - pline * cos(alpha + PI / 3);
pmid.y = p2.y + pline * sin(alpha + PI / 3);
}
else
{
pmid.x = p2.x + pline * cos(alpha + PI / 3);
pmid.y = p2.y - pline * sin(alpha + PI / 3);
}
}
new_count.push_back(count1[i]);
new_count.push_back(p1);
new_count.push_back(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 98304 2009-11-04 13:15 OpenGL3\debug\OpenGL3.exe
文件 5264 2009-11-04 13:15 OpenGL3\OpenGL3\Debug\BuildLog.htm
文件 67298 2009-11-04 13:15 OpenGL3\OpenGL3\Debug\koch.obj
文件 65 2009-11-04 13:15 OpenGL3\OpenGL3\Debug\mt.dep
文件 145 2009-11-04 13:15 OpenGL3\OpenGL3\Debug\OpenGL3.exe.intermediate.manifest
文件 93184 2009-11-04 13:15 OpenGL3\OpenGL3\Debug\vc80.idb
文件 5307 2009-11-04 13:15 OpenGL3\OpenGL3\koch.cpp
文件 3038 2009-11-04 12:07 OpenGL3\OpenGL3\OpenGL3.vcproj
文件 1419 2009-11-04 13:16 OpenGL3\OpenGL3\OpenGL3.vcproj.liuchang-PC.liuchang.user
文件 1805312 2009-11-04 13:16 OpenGL3\OpenGL3.ncb
文件 886 2009-11-04 12:07 OpenGL3\OpenGL3.sln
..A..H. 9216 2009-11-04 13:16 OpenGL3\OpenGL3.suo
目录 0 2009-11-04 13:15 OpenGL3\OpenGL3\Debug
目录 0 2009-11-04 13:15 OpenGL3\debug
目录 0 2009-11-04 13:15 OpenGL3\OpenGL3
目录 0 2009-11-04 12:07 OpenGL3
----------- --------- ---------- ----- ----
2089438 16
- 上一篇:计算机系微机接口实验代码
- 下一篇:用于单片机的模糊控制算法程序
相关资源
- 计算机图形学 边填充算法实现代码
- OpenGL参考手册
- 计算机图形学课设 画板
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 简易绘图程序(计算机图形学课程设
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 图形学集成程序dda、中点算法、多边
- 计算机图形实验(哈尔滨工程大学)
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 计算机图形学-全.rar
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
评论
共有 条评论