```// 2次ベジエ曲線

import java.applet.Applet;
import java.awt.*;

public class bezier1 extends Applet {
double[] Ax = {0,1,2};
double[] Ay = {0,2,1};

public void paint(Graphics g) {
int scale = 100;
int X = 0, Y = 0;
int x,y;
double t;

// 制御点
graphics.SetColor(g,0x000000);
graphics.FillCircle(g,(int)(Ax[0]*scale),(int)(Ay[0]*scale),4);
graphics.FillCircle(g,(int)(Ax[1]*scale),(int)(Ay[1]*scale),4);
graphics.FillCircle(g,(int)(Ax[2]*scale),(int)(Ay[2]*scale),4);
graphics.DrawString(g,"P0",(int)(Ax[0]*scale)-25,(int)(Ay[0]*scale));
graphics.DrawString(g,"P1",(int)(Ax[1]*scale),(int)(Ay[1]*scale)+15);
graphics.DrawString(g,"P2",(int)(Ax[2]*scale)+15,(int)(Ay[2]*scale));

// 接線
graphics.SetColor(g,0xff00);
graphics.DrawLine(g,(int)(Ax[0]*scale),(int)(Ay[0]*scale),
(int)(Ax[1]*scale),(int)(Ay[1]*scale));
graphics.DrawLine(g,(int)(Ax[1]*scale),(int)(Ay[1]*scale),
(int)(Ax[2]*scale),(int)(Ay[2]*scale));

// ベジエ曲線
graphics.SetColor(g,0x0000ff);
for (t=0; t<=1; t+=0.001) {
x = (int)(Px(t)*scale);
y = (int)(Py(t)*scale);
graphics.DrawPoint(g,X+x,Y+y);
}
}

double Px(double t) {
return (1-t)*(1-t)*Ax[0]+2*t*(1-t)*Ax[1]+t*t*Ax[2];
}

double Py(double t) {
return (1-t)*(1-t)*Ay[0]+2*t*(1-t)*Ay[1]+t*t*Ay[2];
}
}

```