|
|
1.1 root 1: #include "pen.h"
2: parabola(x0, y0, x1, y1, xb, yb)
3: double x0, y0, x1, y1, xb, yb;
4: {
5: register double t, x, y;
6: double d1, d2, dt;
7: double c0x,c0y,c1x,c1y;
8: if(noscale){
9: x0 = SCX(x0);
10: y0 = SCY(y0);
11: x1 = SCX(x1);
12: y1 = SCY(y1);
13: xb = SCX(xb);
14: yb = SCY(yb);
15: }
16: d1=sqrt((xb-x0)*(xb-x0)+(yb-y0)*(yb-y0));
17: d2=sqrt((xb-x1)*(xb-x1)+(yb-y1)*(yb-y1));
18: if (d1<=QUANTUM || d2<=QUANTUM) {
19: penUp();
20: fprintf(pltout,"PA %8.2f,%8.2f PD %8.2f,%8.2f",
21: x0,y0,x1,y1);
22: penstate = DOWN;
23: }
24: else {
25: c0x = x0 + x1 - 2.*xb;
26: c0y = y0 + y1 - 2.*yb;
27: c1x = 2. * (xb - x0);
28: c1y = 2. * (yb - y0);
29: penUp();
30: fprintf(pltout,"PA %8.2f,%8.2f PD",x0,y0);
31: penstate = DOWN;
32: dt = QUANTUM/d1;
33: for (t=dt; t < 1.0; t += dt) {
34: x = (c0x*t + c1x)*t + x0;
35: y = (c0y*t + c1y)*t + y0;
36: fprintf(pltout," %8.2f,%8.2f",x,y);
37: }
38: fprintf(pltout," %8.2f,%8.2f\n",x1,y1);
39: }
40: ckerr(0);
41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.