zoukankan      html  css  js  c++  java
  • Bezier画线算法

    编译器:VS2013

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

    主函数段

     1 #include "stdafx.h"
     2 #include<stdio.h>
     3 #include"graphics.h"
     4 #include<stdlib.h>
     5 #include<math.h>
     6 
     7 //函数声明
     8 void Bezier4(int a[]);//四个控制点画出曲线
     9 void Beziern(int a[], int N);//N个点画出曲线
    10 int factorial(int n);//利用递归求出阶乘
    11 
    12 int main()
    13 {
    14     int *p, N,gdriver = DETECT, gmove, i;
    15 
    16     printf("please input the number of point
    ");
    17     scanf_s("%d", &N);
    18 
    19     p = (int *)malloc(2 * N*sizeof(int));
    20 
    21     printf("please input the coordinate:
    ");
    22     for (i = 0; i < 2 * N; i += 2)
    23         scanf_s("%d%d", &p[i], &p[i + 1]);
    24 
    25     initgraph(&gdriver, &gmove, "");
    26 
    27     //画出多边形
    28     for (i = 0; i < 2*N-2; i += 2)
    29         line(p[i], p[i + 1], p[i + 2], p[i + 3]);
    30 
    31     Beziern(p, N);
    32 
    33     system("pause");
    34 
    35     closegraph();
    36 
    37     return 0;
    38 }

    Bezier画线函数

     1 //N个点画出曲线
     2 void Beziern(int a[], int N)
     3 {
     4     double t, X1 = a[0], Y1 = a[1];
     5     int k,i;
     6 
     7     for (t = 0; t <= 1; t += 0.02)
     8     {
     9         putpixel(X1, Y1, YELLOW);
    10 
    11         X1 = 0, Y1 = 0;
    12 
    13         for (i=0,k = 0; k<N; i+=2,k ++)
    14         {
    15             X1 += 1.0*a[i] * factorial(N-1) / factorial(k) / factorial(N-1 - k)*pow(t, k)*pow(1 - t, N-1 - k);//pow函数为求指数的函数
    16             Y1 += 1.0*a[i+1] * factorial(N-1) / factorial(k) / factorial(N-1 - k)*pow(t, k)*pow(1 - t, N -1- k);
    17         }
    18 
    19     }
    20 }
    21 
    22 //利用递归求出阶乘
    23 inline int factorial(int n)
    24 {
    25     if (n > 1)
    26         return n*factorial(n - 1);
    27     else
    28         return 1;
    29 }

    结果:

  • 相关阅读:
    .某机构java架构师路线
    大数据计算的思想--RDD理解
    大数据组件以及岗位职业规划
    大数据技术路线图 --全图.md
    大数据技术路线图 --全图
    视频会议 lsk_lyy_share
    富文本文档git神奇-simul document
    获取当前app的版本号
    在vue中用axios设置请求拦截和响应拦截
    苹果IOS下text-shadow与box-shadow失效的解决办法
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/6929776.html
Copyright © 2011-2022 走看看