曲线的五点光滑法的c代码

上传人:xiao****1972 文档编号:84802798 上传时间:2019-03-04 格式:DOC 页数:4 大小:72KB
返回 下载 相关 举报
曲线的五点光滑法的c代码_第1页
第1页 / 共4页
曲线的五点光滑法的c代码_第2页
第2页 / 共4页
曲线的五点光滑法的c代码_第3页
第3页 / 共4页
曲线的五点光滑法的c代码_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《曲线的五点光滑法的c代码》由会员分享,可在线阅读,更多相关《曲线的五点光滑法的c代码(4页珍藏版)》请在金锄头文库上搜索。

1、编程知识频道 -求计算机图形学曲线的五点光滑法的C代码?互联网本站整理2007-8-27 21:56:09 知识重点:大哥给个算法吧,急用自己不会啊! 可以直接使用的源码: WORD DrawPic(POINT *PosIn, POINT *PosOut, WORD n, WORD EachSum, WORD ch, float tx1, float tx2, float ty1, float ty2) .大哥给个算法吧,急用自己不会啊! 可以直接使用的源码: WORD DrawPic(POINT *PosIn, POINT *PosOut, WORD n, WORD EachSum, WOR

2、D ch, float tx1, float tx2, float ty1, float ty2) const UCHAR MAX_NUM = 16;/最多16个点 float xMAX_NUM, yMAX_NUM; WORD num = 0, tt; float aMAX_NUM, bMAX_NUM, cMAX_NUM, dxMAX_NUM, dyMAX_NUM; float qxMAX_NUM, qyMAX_NUM; float bx3, bx4, by3, by4; float cx, cy, tMAX_NUM+1, pxMAX_NUM, pyMAX_NUM; /float u3, v3

3、; short i; for (i=0; in; i+) xi = PosIni.x; yi = PosIni.y; for (i=0; in; i+) ti = (float)EachSum;/hypot(xi+1 - xi, yi+1 - yi); tn = 1.0e+8;/为以后的计算初始化tn,t0废弃 switch(ch) an = 1; bn = 0; dxn = tx2; dyn = ty2; break; default: return false; for (i=1; i=n-1; i+) ai = 2 * (ti + ti+1);bi = ti+1; ci = ti; dx

4、i = 3 * (ti * (xi+1 - xi) / ti+1 + ti+1 * (xi - xi-1) / ti); dyi = 3 * (ti * (yi+1 - yi) / ti+1 + ti+1 * (yi - yi-1) / ti); c0 = c0 / a0; for (i=1; i=n-1; i+) ai = ai - bi * ci-1; ci = ci / ai; an = an - bn * ci-1; qx0 = dx0 / a0;qy0 = dy0 / a0; for (i=1; i=n; i+) qxi = (dxi - bi * qxi-1) / ai;求电脑图形

5、学曲线的五点光滑法的C编程教程?大哥给个算法吧,急用个人不会啊! 参考正确回答: 没去西方国家国家疑问直接实际运用的源编程教程: WORD DrawPic(POINT *PosIn, POINT *PosOut, WORD n, WORD EachSum, WORD ch, float tx1, float tx2, float ty1, float ty2) const UCHAR MAX_NUM = 16;/最多16个点 float xMAX_NUM, yMAX_NUM; WORD num = 0, tt; float aMAX_NUM, bMAX_NUM, cMAX_NUM, dxMAX

6、_NUM, dyMAX_NUM; float qxMAX_NUM, qyMAX_NUM; float bx3, bx4, by3, by4; float cx, cy, tMAX_NUM+1, pxMAX_NUM, pyMAX_NUM; / float u3, v3; short i; for (i=0; i x = PosIn.x; y = PosIn.y; for (i=0; it = (float)EachSum;/hypot(xi+1 - x, yi+1 - y); tn = 1.0e+8;/为以后的计算初始化tn,t0废弃 switch(ch) an = 1; bn = 0; dxn

7、 = tx2; dyn = ty2; break; default: return false; for (i=1; i=n-1; i+) a = 2 * (t + ti+1);b = ti+1; c = t; dx = 3 * (t * (xi+1 - x) / ti+1 + ti+1 * (x - xi-1) / t); dy = 3 * (t * (yi+1 - y) / ti+1 + ti+1 * (y - yi-1) / t); c0 = c0 / a0; for (i=1; i=n-1; i+) a = a - b * ci-1; c = c / a; an = an - bn *

8、 ci-1; qx0 = dx0 / a0; qy0 = dy0 / a0; for (i=1; i=0; i-) px = qx - c * pxi+1; py = qy - c * pyi+1; /计算曲线上点的坐标 for (i=0; i bx3 = (3 * (xi+1 - x) / ti+1 - 2 * px - pxi+1) / ti+1; bx4 = (2 * (x - xi+1) / ti+1 + px + pxi+1) / ti+1) / ti+1; by3 = (3 * (yi+1 - y) / ti+1 - 2 * py - pyi+1) / ti+1; by4 = (2

9、 * (y - yi+1) / ti+1 + py + pyi+1) / ti+1) / ti+1; tt = 0; while (tt ti+1) cx = x + (px + (bx3 + bx4 * tt) * tt) * tt; cy = y + (py + (by3 + by4 * tt) * tt) * tt; /if (cx = 10) Beep(1000,2); PosOutnum.x = (short)cx; PosOutnum+.y = (short)cy; tt+; PosOutnum.x = PosInn-1.x; PosOutnum+.y = PosInn-1.y;

10、return num; /下面是具体实际运用举例: void Draw() POINT PosIn5,PosOut2048;/输入点与输出点缓存空间 WORD data_Num = 5;/个点 WORD EachSum = 200;/每两个点之间需计算的点数目 PosIn0.x = 11; PosIn0.y = 11; PosIn1.x = 81; PosIn1.y = 171; PosIn2.x = 431; PosIn2.y = 321; PosIn3.x = 211; PosIn3.y = 411; PosIn4.x = 311; PosIn4.y = 511; WORD sum = DrawPic(PosIn,PosOut,data_Num,EachSum,0,0,0,0,0); HDC hdc = :C(hWnd); for (WORD i=0; i:SetPixel(hdc, PosOut.x, PosOut.y, 0x00ffff00);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号