1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include<iostream.h> #include<graphics.h> #include<conio.h> #include<stdio.h> struct point { int x,y; }; void hermite(point p1,point p4,double r1,double r4) { float x,y,t; for(t=0.0;t<=1.0;t+=.001) { x=(2*t*t*t-3*t*t+1)*p1.x+(-2*t*t*t+3*t*t)*p4.x+(t*t*t-2*t*t+t)*r1+(t*t*t-t*t)*r4; y=(2*t*t*t-3*t*t+1)*p1.y+(-2*t*t*t+3*t*t)*p4.y+(t*t*t-2*t*t+1)*r1+(t*t*t-t*t)*r4; putpixel(x,y,YELLOW); } } int main() { int gd=DETECT,gm; double r1,r4; initgraph(&gd,&gm,"..//BGI"); point p1,p2; printf("Enter 2 hermite points:\n"); scanf("%d%d%d%d",&p1.x,&p1.y,&p2.x,&p2.y); printf("Enter the tangents at p1,p4"); scanf("%d%d",&r1,&r4); cleardevice(); hermite(p1,p2,r1,r4); putpixel(x1,y1,WHITE); putpixel(x2,y2,WHITE); getch(); closegraph(); return 0; } |
its not working.
#include
#include
int line1(int,int,int,int);
void hermite(int x1,int y1,int x2,int y2,float slope1,float slope2)
{
float x,y;
float u;
for(u=0.00;u<=1.0;u+=0.001)
{
x=(2*u*u*u-3*u*u+1)*x1+(-2*u*u*u+3*u*u)*x2+(u*u*u-2*u*u+u)*slope1*x1+(u*u*u-u*u)*slope2*x2;
y=(2*u*u*u-3*u*u+1)*y1+(-2*u*u*u+3*u*u)*y2+(u*u*u-2*u*u+u)*slope1*x1+(u*u*u-u*u)*slope2*x2;
putpixel(20+(int)(x+0.5),240-(int)(y+0.5),RED);
}
}
int main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc\\bgi");
int i,j,k,l,m,n,x,y,z;
//hermite(10,10,100,100,3,4);
hermite(100,50,100,100,0.9,-1);
line1(100,0,100,100);
line1(100,50,120,0);
line1(140,0,150,100);
line1(150,100,160,0);
line1(145,50,155,50);
line1(180,0,180,100);
line1(180,100,200,0);
line1(200,0,200,100);
line1(220,0,230,100);
line1(230,100,240,0);
line1(225,50,235,50);
getch();
closegraph();
return 0;
}
int line1(int x1,int y1,int x2,int y2)
{
setcolor(RED);
line(20+x1,240-y1,20+x2,240-y2);
return 0;
}