#include "graphics.h" #include #define PONT 4 void curvedraw(pont2d G[PONT], float M[4][4], int s) { pont2d C[4]={0},P; int i,j,tipus=0; float a=0,b=1; if( M[2][2] == 1 ) { tipus = 1; // 1: Hermit a = -1; b = 2; } float t=a,eps=(b-a)/s; for(i=0; i<4; i++) { for(j=0; j<4; j++) { C[i].x += G[j].x * M[j][i]; C[i].y += G[j].y * M[j][i]; } } if( tipus == 0 ) moveto( (int) (C[0].x*t*t*t + C[1].x*t*t + C[2].x*t + C[3].x), (int) (C[0].y*t*t*t + C[1].y*t*t + C[2].y*t + C[3].y) ); else moveto( (int)G[0].x, (int)G[0].y ); for(t=a; t<=b; t+=eps) { P.x = (int) C[0].x*t*t*t + C[1].x*t*t + C[2].x*t + C[3].x; P.y = (int) C[0].y*t*t*t + C[1].y*t*t + C[2].y*t + C[3].y; lineto( (int)P.x, (int)P.y ); } moveto( (int)G[0].x, (int)G[0].y ); for(i=1; i<4; i++) lineto( (int)G[i].x, (int)G[i].y ); } int main() { int gd,gm,ap,i,j,page=0; pont2d pontok[PONT], G[4]; float H[4][4] = { {-1.0/6, 1.0/2, -1.0/3, 0}, { 1.0/2, -1, -1.0/2, 1}, {-1.0/2, 1.0/2, 1, 0}, { 1.0/6, 0, -1.0/6, 0} }; float B[4][4] = { {-1.0/6, 3.0/6, -3.0/6, 1.0/6}, { 3.0/6, -6.0/6, 0.0, 4.0/6}, {-3.0/6, 3.0/6, 3.0/6, 1.0/6}, { 1.0/6, 0.0, 0.0, 0.0} }; gd = VGA; gm = VGAMAX; initgraph(&gd,&gm,""); for(i=0, j=50; i=0 && balgomb) { pontok[ap].x = egerx; pontok[ap].y = egery; } for(i=0; i