三角形填充
来源:互联网 发布:写个代码抢淘宝的月饼 编辑:程序博客网 时间:2024/04/29 03:49
给定三角形的三个顶点,填充三角形,想来想去,竟然找不到这样的软件工具。就连matlab都没有提供这样的绘图功能。我有一组三角形的顶点坐标,想判断这些三角形是否可以完全拼合在一起。如果一个一个地去检查每个三角形的顶点坐标,那真不是人干的活。求人不如求已,干脆自己写一个windows程序吧,利用gdi来填充三角形。
(1)读取三角形顶点坐标
三角形的顶点坐标是如此保存在一个txt文件中的:
248 224 242 223 247 221
253 221 245 218 229 218
219 218 253 221 229 218
。。。
每行格式为:x0 y0 x1 y1 x2 y2,核心代码为:
FILE* txtFile;
txtFile=fopen(fileName,"rt");
int i=0;
while(fscanf(txtFile,"%d %d %d %d %d %d\n",&x0,&y0,&x1,&y1,&x2,&y2)!=EOF)
{
tris[i].x0 = x0;
tris[i].y0 = y0;
tris[i].x1 = x1;
tris[i].y1 = y1;
tris[i].x2 = x2;
tris[i].y2 = y2;
i++;
}
(2)填充三角形的函数
CClientDC dc(this);
CPoint p1(x0,y0), p2(x1,y1), p3(x2,y2);
CPoint points[]={p1,p2,p3,p1};
CRgn rgn;
rgn.CreatePolygonRgn(points,3,ALTERNATE/*WINDING*/);//创建区域
CBrush brush;
brush.CreateSolidBrush(rgb);//创建画刷
dc.FillRgn(&rgn,&brush);//填充区域
brush.DeleteObject();
rgn.DeleteObject();
(3)绘制所有三角形
在OnDraw()函数中调用以下代码就可以绘制出所有的三角形了。
for(int i=0;i<trisCnt;i++)
{
FillPoly3f(tris[i].x0, tris[i].y0,
tris[i].x1, tris[i].y1,
tris[i].x2, tris[i].y2, 0xFFFFFF);
}
- 三角形填充
- AS3 三角形填充
- MIDP1.0中实现三角形的填充
- 一个粗陋的三角形填充算法
- 用vc画三角形并填充
- 三角形填充和分形练习
- HTML5 移动开发 -- Canvas 绘图 9.1 矩形,填充三角形
- Windows游戏编程大师技巧之三角形填充
- Windows游戏编程大师技巧之三角形填充
- 自制3D显示引擎六:填充三角形
- 将Autocad的图形填充(Hatch)转化为三角形
- 计算机图形学三角形基元填充算法即三角形光栅化重心双线性插值算法
- [软件渲染器入门]四,填充光栅化的三角形并使用深度缓冲
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- SDL编程四(事件)
- 定点数转换
- 函数原型的声明不可小视
- C#实现3DES加密
- Union和Union All到底有什么区别
- 三角形填充
- char*、WCHAR*、vc8中的CString
- 使用文件映射实现进程通信
- iphone开发——图文混排 资料收集
- main函数之前执行代码
- write back和write through
- SQL——多行并成一行显示, 以字符串分隔(相当于C#中的join)
- Android输入汉字得到拼音
- C#顺序读取文件流