编译器:VS2013

描述:Bezier画线是利用导数相同拼接曲线,使曲线十分光滑,而不是随意拼接观赏性很差

主函数段

 #include "stdafx.h"
#include<stdio.h>
#include"graphics.h"
#include<stdlib.h>
#include<math.h> //函数声明
void Bezier4(int a[]);//四个控制点画出曲线
void Beziern(int a[], int N);//N个点画出曲线
int factorial(int n);//利用递归求出阶乘 int main()
{
int *p, N,gdriver = DETECT, gmove, i; printf("please input the number of point\n");
scanf_s("%d", &N); p = (int *)malloc( * N*sizeof(int)); printf("please input the coordinate:\n");
for (i = ; i < * N; i += )
scanf_s("%d%d", &p[i], &p[i + ]); initgraph(&gdriver, &gmove, ""); //画出多边形
for (i = ; i < *N-; i += )
line(p[i], p[i + ], p[i + ], p[i + ]); Beziern(p, N); system("pause"); closegraph(); return ;
}

Bezier画线函数

 //N个点画出曲线
void Beziern(int a[], int N)
{
double t, X1 = a[], Y1 = a[];
int k,i; for (t = ; t <= ; t += 0.02)
{
putpixel(X1, Y1, YELLOW); X1 = , Y1 = ; for (i=,k = ; k<N; i+=,k ++)
{
X1 += 1.0*a[i] * factorial(N-) / factorial(k) / factorial(N- - k)*pow(t, k)*pow( - t, N- - k);//pow函数为求指数的函数
Y1 += 1.0*a[i+] * factorial(N-) / factorial(k) / factorial(N- - k)*pow(t, k)*pow( - t, N -- k);
} }
} //利用递归求出阶乘
inline int factorial(int n)
{
if (n > )
return n*factorial(n - );
else
return ;
}

结果:

Bezier画线算法的更多相关文章

  1. 两种画线算法(DDA&Bersenham)

    DDA(digital differential analyzer) 由直线的斜截式方程引入 对于正斜率的线段,如果斜率<=1,则以单位x间隔(δx=1)取样,并逐个计算每一个y值 Yk+1 = ...

  2. Bresenham画线算法

    [Bresenham画线算法] Bresenham是一种光栅化算法.不仅可以用于画线,也可以用用画圆及其它曲线. 通过lower与upper的差,可以知道哪一个点更接近线段: 参考:<计算机图形 ...

  3. 中点Brehensam画线算法

    #include<stdio.h> #include<stdlib.h> #include"graphics.h" //函数声明 void MidBreha ...

  4. 计算机图形学(二)输出图元_3_画线算法_2_DDA算法

    DDA算法        数字微分分析仪(digital differential analyzer, DDA)方法是一种线段扫描转换算法.基于使用等式(3.4)或等式(3.5)计算的&x或& ...

  5. DDA画线算法

    #include<stdio.h> #include"graphics.h" #include<math.h> #include<stdlib.h&g ...

  6. Bresenham直线算法与画圆算法

    在我们内部开发使用的一个工具中,我们需要几乎从 0 开始实现一个高效的二维图像渲染引擎.比较幸运的是,我们只需要画直线.圆以及矩形,其中比较复杂的是画直线和圆.画直线和圆已经有非常多的成熟的算法了,我 ...

  7. 计算机图形学DDA画线法+中点画线法+Bresenham画线法

    #include <cstdio> #include <cstring> #include <conio.h> #include <graphics.h> ...

  8. 画线函数Glib_Line算法的研究

      在这里首先先简单把我对函数的功能的理解阐述一下,方便后面的分析:Glib_Line函数实现的功能是通过参数给定(x1,y1,x2,y2,color),来确定起点(x1,y1)和终点(x2,y2)两 ...

  9. Android中Path类的lineTo方法和quadTo方法画线的区别

    转载:http://blog.csdn.net/stevenhu_223/article/details/9229337 当我们需要在屏幕上形成画线时,Path类的应用是必不可少的,而Path类的li ...

随机推荐

  1. css居中参考

    http://www.cnblogs.com/asqq/archive/2012/04/09/2438745.html

  2. C语言define 可以提高程序运行的速度

    define的优缺点 优点 提高了程序的可读性,同时也方便进行修改: 提高程序的运行效率:使用带参的宏定义既可完成函数调用的功能,又能避免函数的出栈与入栈操作,减少系统开销,提高运行效率: 3.宏是由 ...

  3. DevExpress v17.2新版亮点—WinForms篇(一)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...

  4. 20165202 Mypwd

    实现mypwd(选做,加分) 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 提交过程博客的链接 实现过程 使用m ...

  5. JSONField解决序列化与反序列化字段匹配问题

    需求:调用第三方数据,数据格式为Json,并提供一个接口将获取的第三方数据给本公司其他部门调用. 处理流程:第三方Json--反序列化实体--保存到本地数据库--查询数据--序列化Json数据供本公司 ...

  6. TP 模板的变量输出

  7. 【转】重装win7后,所有USB接口无法使用(鼠标、键盘、U盘)

    转自:https://blog.csdn.net/u010887744/article/details/45270245 今天给一朋友重装系统,华硕FX50J,修改BIOS重装了win7,结果所有US ...

  8. 玩转TypeScript(引言&文章目录) --初看TypeScript.

    JavaScript过去一直被当作一种玩具语言存在,直到2005年以后,这门语言又开始活跃并可以说是火爆,而且随着浏览器版本的不断升级和完善,各种DOM之间的兼容性已经渐渐的被各种技术解决了,比如经典 ...

  9. MVA Prototype Only User License

    This App is only a protetype of MVA WP app, the intent is to demostrate to Leadership person about w ...

  10. tensorflow中常用学习率更新策略

    神经网络训练过程中,根据每batch训练数据前向传播的结果,计算损失函数,再由损失函数根据梯度下降法更新每一个网络参数,在参数更新过程中使用到一个学习率(learning rate),用来定义每次参数 ...