资源简介
本资源包含了Bezier曲线和B样条曲面的代码实现,非常美观,还带了排版规整的实验报告,源代码基于c,下载即可运行,欢迎交流,请勿抄袭
代码片段和文件信息
//////////////////////////
//程序名称:任意阶Bezier曲线
//功 能:单击左键布点单击右键画Bezier画一次后可继续布点再画双击右键可退出程序
#include
#include
#include
#include
#include
using namespace std;
int n=0;
double Points[100][2];
int Mouse_event(); // 鼠标事件
void initializer(); // 界面初始化
double* Bezier(double tint iint k){ // k阶Bezier
if(k==0){
return Points[i];
}
double* now_point = new double[2];
double* one=Bezier(tik-1);
double* two=Bezier(ti+1k-1);
now_point[0]=(1.0-t)*one[0]+t*two[0];
now_point[1]=(1.0-t)*one[1]+t*two[1];
return now_point;
}
void PaintBezier(){
double* x0;
double* x1;
for(int i=0 ; i<=50 ; i++){
double t=i/50.0;
if(i==0){
x0=Bezier(t0n-1);
putpixel(int(x0[0])int(x0[1])RED);
}else{
x1=Bezier(t0n-1);
line(int(x0[0])int(x0[1])int(x1[0])int(x1[1]));
x0[0]=x1[0];
x0[1]=x1[1];
}
}
}
void PaintPoints(){
for(int i=0 ; i circle(int(Points[i][0])int(Points[i][1])2);
}
}
int main(){
initializer();
if(!Mouse_event()) return 0;
//停住
getch();
closegraph();
return 0;
}
void initializer(){
initgraph(800 640);
setbkcolor(WHITE);
setcolor(WHITE);
fillrectangle(00800640);
setcolor(BLACK);
rectangle(00799639);
setcolor(BLACK);
line(08080080);
RECT r1 = {0 0 800 80};
drawtext(_T(“\n单击左键布点\n单击右键画Bezier,画一次后可继续布点再画\n双击右键可退出程序“) &r1 DT_CENTER | DT_VCENTER );
HRGN rgn = CreateRectRgn(1 81 799 639);
// 将该矩形区域设置为裁剪区
setcliprgn(rgn);
setcolor(BLACK);
rectangle(00800640);
setcolor(RED);
}
int Mouse_event(){
MOUSEMSG m; // 定义鼠标消息
while(true)
{
// 获取一条鼠标消息
m = GetMouseMsg();
switch(m.uMsg)
{
case WM_LBUTTONDOWN:
break;
case WM_LBUTTONUP:
Points[n][0]=m.x;
Points[n][1]=m.y;
n++;
BeginBatchDraw();
clearcliprgn();
PaintPoints();
FlushBatchDraw();
EndBatchDraw();
break;
case WM_MOUSEMOVE:
break;
case WM_RBUTTONDOWN:
PaintBezier();
break;
case WM_RBUTTONDBLCLK:
return 0; // 双击鼠标右键退出程序
break;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2360 2019-05-01 14:33 实验五代码\5-2.cpp
文件 3779 2019-05-09 17:25 实验五代码\5-4.cpp
文件 266074 2019-05-10 14:11 实验五报告.docx
目录 0 2019-05-09 17:45 实验五代码\
相关资源
- vs搭建OpenGL所需文件 & 简易天体运动源
- 山东大学软件工程计算机图形学期末
- 《计算机图形学》课后题答案
- 计算机图形学 种子填充算法
- 计算机图形学论文
- 计算机图形学实验程序
- 计算机图形学OpenGL、codeblock、四连通
- 计算机图形学大实验多边形填充扫描
- 计算机图形学复习题及答案.doc
- 计算机图形学OpengL蔡士杰等译 随书代
- 计算机图形学基础 作业答案 作者:
- 计算机图形学 交互实体模型
- 计算机图形学-电子版实验报告.doc
- 计算机图形学 第四版 中文版 完整版
- 图形学课程设计运动的小球
- 计算机图形学源码DDA直线、中点圆、
- 计算机图形学源码DDA直线、中点直线
- 计算机图形学上机作业
- 计算机图形学大作业之图形绘制变换
- 扫描线种子填充算法代码
- 计算机图形学裁剪算法
- opengl雪花代码
- 东南大学计算机图形学实验三 橡皮筋
- 东南大学计算机图形学实验二 简单
- 计算机图形学实验之区域填充实验报
- 2017-2018计算机图形学A卷附(答案)
- 计算机图形学教程课后习题答案
- 计算机图形学第三版孙家广课后答案
- 计算机图形学__Bresenham完整算法_画直
- 计算机图形学四面体几何变换.doc
评论
共有 条评论