Bezier曲线控制点

时间:2015-09-13 13:33:58

标签: graphics bezier

我需要使用贝塞尔曲线绘制像alpha(α)beta(β)和gamma(γ)这样的字符。 我无法找到正确的控制点组合。 我应该对程序进行任何更改,还是应该完全更改。

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<stdlib.h>
#include<process.h>
#include<conio.h>
#include<math.h>
#define POINTS 10
int x[POINTS],y[POINTS],no,endl,i,k;
double factorial(double number)
{
    double product=1;
    for(i=1;i<number;i++)
    product*=i;
return product;
}
void getData()
{
    printf("enter no. of points:");
    scanf("%d",&no);
    printf("enter points:%d",endl);
    for(i=0;i<no;i++)
    {
    printf("x=%d ",i);
    scanf("%d",&x[i]);
    printf("y=%d ",i);
    scanf("%d", &y[i]);
    }
    for(i=1;i<no;i++)
    line(x[i-1],y[i-1],x[i],y[i]);
}
void Bezier() 
{
    double b=0,f=0;
    double u=0.0001;
    while(u<=1)
    {
    double xu=0,yu=0;
        for(k=0;k<=no;k++)
        {        
        f=factorial(no)/(factorial(k)*factorial(no-k));
        b=pow(u,k)*pow((1-u),(no-k));
        xu+=x[k]*f*b;
        yu+=y[k]*f*b;
        }
        putpixel(xu,yu,WHITE);
        u+=0.0001;
    }
}

void main()
{
int gd=DETECT,gm;
clrscr();
initgraph(&gd,&gm,"C:\\TC\\BGI");
getData();
no--;
Bezier();
getch();
closegraph();
}

0 个答案:

没有答案