貝塞爾曲線

 1 #include <stdio.h>
 2 #include <opencv/cv.h>
 3 #include <opencv/cxcore.h>
 4 #include <opencv/highgui.h>
 5 #include <math.h>
 6 
 7 long long  bazal [101][102];
 8 /************
 9 1
10 1 1
11 1 2 1
12 1 3 3 1
13 ************/
14 
15 void set_bazal()
16 {
17     for (int i = 0; i < 101; i++)
18     {
19         for (int j = 0; j < 102; j++)
20         {
21             bazal[i][j] = 1;
22         }
23     }
24     for (int i = 2; i < 101; i++)
25     {
26         for (int j = 2; j < i+1; j++)
27         {
28             bazal[i][j] = bazal[i-1][j-1] + bazal[i-1][j];
29         }
30     }
31     for (int i = 1; i < 30; i++)
32     {
33         for (int j = 1; j <= i+1; j++)
34         {
35             printf("%10ld", bazal[i][j]);
36         }
37         printf("
");
38     }
39 }
40 
41 int main(int argc, char argv[])
42 {
43     set_bazal();
44     getchar();
45     IplImage* srcimg = cvLoadImage("Jellyfish.jpg", 1);
46     CvFont font;
47     cvInitFont(&font,CV_FONT_HERSHEY_DUPLEX ,1.0f,1.0f,0,1,CV_AA);
48     cvPutText(srcimg, "123123",cvPoint(100, 100), &font,CV_RGB(255,255,0));
49 
50     int x0 = 100;
51     int y0 = 100;
52 
53     int x1 = 300;
54     int y1 = 200;
55 
56     int x2 = 500;
57     int y2 = 20;
58 
59     int x3 = 700;
60     int y3 = 100;
61 
62 
63     for(float i = 0; i <= 1; i += 0.001 )
64     {
65         
66         CvPoint centerpoint;
67         centerpoint.x= (int)((double)(x0) * powf(i, 3) * powf(1-i, 0) * bazal[3][1] +   (double)(x1) * powf(i, 2) * powf(1-i, 1) * bazal[3][2] +   (double)(x2) * powf(i, 1) * powf(1-i, 2) * bazal[3][3] + (int)((double)(x3) * powf(i, 0) * powf(1-i, 3) * bazal[3][4]) ); 
68         centerpoint.y= (int)((double)(y0) * powf(i, 3) * powf(1-i, 0) * bazal[3][1] +   (double)(y1) * powf(i, 2) * powf(1-i, 1) * bazal[3][2] +   (double)(y2) * powf(i, 1) * powf(1-i, 2) * bazal[3][3] + (int)((double)(y3) * powf(i, 0) * powf(1-i, 3) * bazal[3][4]) ); 
69         cvCircle( srcimg, centerpoint ,1 , CV_RGB(0,255,0),1, 8, 3 );
70     }
71 
72     cvNamedWindow("srcimg");
73     cvShowImage("srcimg", srcimg);
74     cvWaitKey(0);
75     cvDestroyWindow("srcimg");
76     cvReleaseImage(&srcimg);
77     getchar();
78     return 0;
79 }
原文地址:https://www.cnblogs.com/ruichenduo/p/5958366.html