import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class m0104352_tubasa extends Applet
{
    static int WIDTH, HEIGHT;        // 画面サイズ
    Point point[][];                 // 制御点
    int point_num = 0;               // 制御点の番号
    boolean capture_mode_FLG;        // 線を制御できるかを表すフラグ

    static final int point_data[][][] = { //制御点

    	//茎
		{ {50, 80}, {45, 70}, {42, 60} },
		{ {50, 80}, {55, 70}, {58, 60} },

		{ {50, 100}, {45, 90}, {42, 80} },
		{ {50, 100}, {55, 90}, {58, 80} },

		{ {50, 120}, {45, 110}, {42, 100} },
		{ {50, 120}, {55, 110}, {58, 100} },

		{ {50, 140}, {45, 130}, {42, 120} },
		{ {50, 140}, {55, 130}, {58, 120} },

		{ {50, 160}, {45, 150}, {42, 140} },
		{ {50, 160}, {55, 150}, {58, 140} },

		{ {50, 180}, {45, 170}, {42, 160} },
		{ {50, 180}, {55, 170}, {58, 160} },

		{ {50, 200}, {45, 190}, {42, 180} },
		{ {50, 200}, {55, 190}, {58, 180} },

		{ {50, 220}, {45, 210}, {42, 200} },
		{ {50, 220}, {55, 210}, {58, 200} },

		{ {50, 240}, {45, 230}, {42, 220} },
		{ {50, 240}, {55, 230}, {58, 220} },

		{ {50, 260}, {45, 250}, {42, 240} },
		{ {50, 260}, {55, 250}, {58, 240} },

		//毛
		{ {50, 35}, {45, 45}, {42, 55} },
		{ {50, 35}, {55, 45}, {58, 55} },

		{ {40, 40}, {35, 50}, {32, 60} },
		{ {60, 40}, {65, 50}, {68, 60} },

		{ {35, 80}, {32, 70}, {27, 60} },
		{ {65, 80}, {68, 70}, {73, 60} },

		{ {35, 100}, {32, 90}, {21, 80} },
		{ {65, 100}, {68, 90}, {79, 80} },

		{ {35, 120}, {32, 110}, {21, 100} },
		{ {65, 120}, {68, 110}, {79, 100} },

		{ {35, 140}, {32, 130}, {21, 120} },
		{ {65, 140}, {68, 130}, {79, 120} },

		{ {35, 160}, {32, 150}, {21, 140} },
		{ {65, 160}, {68, 150}, {79, 140} },

		{ {35, 180}, {32, 170}, {21, 160} },
		{ {65, 180}, {68, 170}, {79, 160} },

		{ {35, 200}, {32, 190}, {21, 180} },
		{ {65, 200}, {68, 190}, {79, 180} },

		{ {35, 220}, {32, 210}, {21, 200} },
		{ {65, 220}, {68, 210}, {79, 200} },

		{ {35, 240}, {32, 230}, {21, 220} },
		{ {65, 240}, {68, 230}, {79, 220} },

		{ {35, 260}, {32, 250}, {21, 240} },
		{ {65, 260}, {68, 250}, {79, 240} },

		{ {50, 280}, {49, 270}, {38, 260} },
		{ {50, 280}, {51, 270}, {62, 260} },

    };

    Graphics offg, backg;
    Image    offi, backi;

    public void initialize()// 制御点の設定
    {
        int i;
        point = new Point[point_data.length][];

        for(i = 0; i < point.length; i++)
        {
            point[i] = new Point[point_data[i].length];
            for(int j = 0; j < point_data[i].length; j++)
                point[i][j] = new Point(point_data[i][j][0],
                                        point_data[i][j][1]);
        }
    }

    public void init()
    {
        WIDTH = 800; HEIGHT = 600;

        initialize();//制御点の設定

        offi = createImage(WIDTH, HEIGHT);
        offg = offi.getGraphics();
        backi = createImage(WIDTH, HEIGHT);
        backg = backi.getGraphics();
        setBackImage(backg);

        // テスト
        addKeyListener(new KeyAdapter()
        {
            public void keyPressed(KeyEvent ke)
            {
                int c = ke.getKeyCode();
                if(c == 'P'){
                    System.out.println("{");
                    for(int i = 0; i < point[point_num].length; i++)
                        System.out.println(""+point[point_num][i].x
                                        +", "+point[point_num][i].y);
                    System.out.println("},");
                }
                else if(c == 'B'){
                    repaint();
                }
            }
        });
    }

    public void setBackImage(Graphics g)    // 背景の用意
    {
        g.setColor(Color.black);
        g.fillRect(0, 0, WIDTH, HEIGHT);
        g.setColor(Color.black);
        g.drawRect(0, 0, WIDTH-1, HEIGHT-1);  // 枠描画
    }

    public int kaijyo(int num)            // 階乗を計算
    {
        int total = 1;

        if(num == 0) return 1;

        for(; num > 1; num--)
            total *= num;

        return total;
    }

    public void BezierCurve(Graphics g, Color color, Point point[])  // 曲線計算
    {
        int i, j;
        double x1, x2, y1, y2, x3, x4, y3, y4 =0;
        double bernstein[] = new double[point.length];
        x1 = point[0].x;
        y1 = point[0].y;
        int centerX = 400;
		int centerY = 300;

        g.setColor(color);

        for(double t = 0; t <= 1; t += 0.01)
        {
            for(i = 0; i < point.length; i++)        // bernstein関数を計算
            {
                bernstein[i] = (double)kaijyo(point.length-1)
                            / (kaijyo(i)*kaijyo(point.length-1-i));

                for(j = 1; j <= i; j++) bernstein[i] *= t;
                for(j = 1; j <= point.length-1-i; j++) bernstein[i] *= (1-t);
            }

            x2 = y2 = 0;
            for(i = 0; i < point.length; i++)
            {
                x2 += point[i].x * bernstein[i];
                y2 += point[i].y * bernstein[i];
            }

			x3 = Math.cos(Math.PI / 4 * (1.3)) * 0.7 * x1 + 552 - Math.sin(Math.PI / 4 * (1.3)) * 0.7 * y1;
			y3 = Math.sin(Math.PI / 4 * (1.3)) * 0.7 * x1  + Math.cos(Math.PI / 4 * (1.3)) * 0.7 * y1 + 180;
			x4 = Math.cos(Math.PI / 4 * (1.3)) * 0.7 * x2 + 552 - Math.sin(Math.PI / 4 * (1.3)) * 0.7 * y2;
			y4 = Math.sin(Math.PI / 4 * (1.3)) * 0.7 * x2  + Math.cos(Math.PI / 4 * (1.3)) * 0.7 * y2 + 180;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

		    x3 = Math.cos(Math.PI / 4 * (0.5)) * 0.8 * x1 + 602 - Math.sin(Math.PI / 4 * (0.5)) * 0.8 * y1;
			y3 = Math.sin(Math.PI / 4 * (0.5)) * 0.8 * x1  + Math.cos(Math.PI / 4 * (0.5)) * 0.8 * y1 - 5;
			x4 = Math.cos(Math.PI / 4 * (0.5)) *0.8 * x2 + 602 - Math.sin(Math.PI / 4 * (0.5)) * 0.8 * y2;
			y4 = Math.sin(Math.PI / 4 * (0.5)) * 0.8 * x2  + Math.cos(Math.PI / 4 * (0.5)) * 0.8 * y2 - 5;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (3.3)) * 0.9 * x1 + 820 - Math.sin(Math.PI / 4 * (3.3)) * 0.9 * y1;
			y3 = Math.sin(Math.PI / 4 * (3.3)) * 0.9 * x1  + Math.cos(Math.PI / 4 * (3.3)) * 0.9 * y1 + 207;
			x4 = Math.cos(Math.PI / 4 * (3.3)) * 0.9 * x2 + 820 - Math.sin(Math.PI / 4 * (3.3)) * 0.9 * y2;
			y4 = Math.sin(Math.PI / 4 * (3.3)) * 0.9 * x2  + Math.cos(Math.PI / 4 * (3.3)) * 0.9 * y2 + 207;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.3)) * 1.0 * x1 + 745 - Math.sin(Math.PI / 4 * (4.3)) * 1.09 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.3)) * 1.0 * x1  + Math.cos(Math.PI / 4 * (4.3)) * 1.0 * y1 + 495;
			x4 = Math.cos(Math.PI / 4 * (4.3)) * 1.0 * x2 + 745 - Math.sin(Math.PI / 4 * (4.3)) * 1.09 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.3)) * 1.0 * x2  + Math.cos(Math.PI / 4 * (4.3)) * 1.0 * y2 + 495;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (3.3)) * 0.7 * x1 + 765 - Math.sin(Math.PI / 4 * (3.3)) * 0.7 * y1;
			y3 = Math.sin(Math.PI / 4 * (3.3)) * 0.7 * x1  + Math.cos(Math.PI / 4 * (3.3)) * 0.7 * y1 + 235;
			x4 = Math.cos(Math.PI / 4 * (3.3)) * 0.7 * x2 + 765 - Math.sin(Math.PI / 4 * (3.3)) * 0.7 * y2;
			y4 = Math.sin(Math.PI / 4 * (3.3)) * 0.7 * x2  + Math.cos(Math.PI / 4 * (3.3)) * 0.7 * y2 + 235;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.3)) * 0.7 * x1 + 692 - Math.sin(Math.PI / 4 * (4.3)) * 0.7 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.3)) * 0.7 * x1  + Math.cos(Math.PI / 4 * (4.3)) * 0.7 * y1 + 435;
			x4 = Math.cos(Math.PI / 4 * (4.3)) * 0.7 * x2 + 692 - Math.sin(Math.PI / 4 * (4.3)) * 0.7 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.3)) * 0.7 * x2  + Math.cos(Math.PI / 4 * (4.3)) * 0.7 * y2 + 435;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.1)) * 0.7 * x1 + 682 - Math.sin(Math.PI / 4 * (4.1)) * 0.7 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.1)) * 0.7 * x1  + Math.cos(Math.PI / 4 * (4.1)) * 0.7 * y1 + 608;
			x4 = Math.cos(Math.PI / 4 * (4.1)) * 0.7 * x2 + 682 - Math.sin(Math.PI / 4 * (4.1)) * 0.7 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.1)) * 0.7 * x2  + Math.cos(Math.PI / 4 * (4.1)) * 0.7 * y2 + 608;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (3.7)) * 0.7 * x1 + 700 - Math.sin(Math.PI / 4 * (3.7)) * 0.7 * y1;
			y3 = Math.sin(Math.PI / 4 * (3.7)) * 0.7 * x1  + Math.cos(Math.PI / 4 * (3.7)) * 0.7 * y1 + 310;
			x4 = Math.cos(Math.PI / 4 * (3.7)) * 0.7 * x2 + 700 - Math.sin(Math.PI / 4 * (3.7)) * 0.7 * y2;
			y4 = Math.sin(Math.PI / 4 * (3.7)) * 0.7 * x2  + Math.cos(Math.PI / 4 * (3.7)) * 0.7 * y2 + 310;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.2)) * 0.7 * x1 + 642 - Math.sin(Math.PI / 4 * (4.2)) * 0.7 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.2)) * 0.7 * x1  + Math.cos(Math.PI / 4 * (4.2)) * 0.7 * y1 + 492;
			x4 = Math.cos(Math.PI / 4 * (4.2)) * 0.7 * x2 + 642 - Math.sin(Math.PI / 4 * (4.2)) * 0.7 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.2)) * 0.7 * x2  + Math.cos(Math.PI / 4 * (4.2)) * 0.7 * y2 + 492;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.1)) * 0.8 * x1 + 614 - Math.sin(Math.PI / 4 * (4.1)) * 0.8 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.1)) * 0.8 * x1  + Math.cos(Math.PI / 4 * (4.1)) * 0.8 * y1 + 430;
			x4 = Math.cos(Math.PI / 4 * (4.1)) * 0.8 * x2 + 614 - Math.sin(Math.PI / 4 * (4.1)) * 0.8 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.1)) * 0.8 * x2  + Math.cos(Math.PI / 4 * (4.1)) * 0.8 * y2 + 430;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.1)) * 0.48 * x1 + 557 - Math.sin(Math.PI / 4 * (4.1)) * 0.48 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.1)) * 0.48 * x1  + Math.cos(Math.PI / 4 * (4.1)) * 0.48 * y1 + 389;
			x4 = Math.cos(Math.PI / 4 * (4.1)) * 0.48 * x2 + 557 - Math.sin(Math.PI / 4 * (4.1)) * 0.48 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.1)) * 0.48 * x2  + Math.cos(Math.PI / 4 * (4.1)) * 0.48 * y2 + 389;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.1)) * 0.3 * x1 + 518 - Math.sin(Math.PI / 4 * (4.1)) * 0.3 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.1)) * 0.3 * x1  + Math.cos(Math.PI / 4 * (4.1)) * 0.3 * y1 + 366;
			x4 = Math.cos(Math.PI / 4 * (4.1)) * 0.3 * x2 + 518 - Math.sin(Math.PI / 4 * (4.1)) * 0.3 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.1)) * 0.3 * x2  + Math.cos(Math.PI / 4 * (4.1)) * 0.3 * y2 + 366;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (4.1)) * 0.25 * x1 + 487 - Math.sin(Math.PI / 4 * (4.1)) * 0.25 * y1;
			y3 = Math.sin(Math.PI / 4 * (4.1)) * 0.25 * x1  + Math.cos(Math.PI / 4 * (4.1)) * 0.25 * y1 + 370;
			x4 = Math.cos(Math.PI / 4 * (4.1)) * 0.25 * x2 + 487 - Math.sin(Math.PI / 4 * (4.1)) * 0.25 * y2;
			y4 = Math.sin(Math.PI / 4 * (4.1)) * 0.25 * x2  + Math.cos(Math.PI / 4 * (4.1)) * 0.25 * y2 + 370;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (3.6)) * 0.25 * x1 + 477 - Math.sin(Math.PI / 4 * (3.6)) * 0.25 * y1;
			y3 = Math.sin(Math.PI / 4 * (3.6)) * 0.25 * x1  + Math.cos(Math.PI / 4 * (3.6)) * 0.25 * y1 + 381;
			x4 = Math.cos(Math.PI / 4 * (3.6)) * 0.25 * x2 + 477 - Math.sin(Math.PI / 4 * (3.6)) * 0.25 * y2;
			y4 = Math.sin(Math.PI / 4 * (3.6)) * 0.25 * x2  + Math.cos(Math.PI / 4 * (3.6)) * 0.25 * y2 + 381;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = Math.cos(Math.PI / 4 * (3.3)) * 0.25 * x1 + 455 - Math.sin(Math.PI / 4 * (3.3)) * 0.25 * y1;
			y3 = Math.sin(Math.PI / 4 * (3.3)) * 0.25 * x1  + Math.cos(Math.PI / 4 * (3.3)) * 0.25 * y1 + 372;
			x4 = Math.cos(Math.PI / 4 * (3.3)) * 0.25 * x2 + 455 - Math.sin(Math.PI / 4 * (3.3)) * 0.25 * y2;
			y4 = Math.sin(Math.PI / 4 * (3.3)) * 0.25 * x2  + Math.cos(Math.PI / 4 * (3.3)) * 0.25 * y2 + 372;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

			x3 = x3 - centerX;
			y3 = y3 - centerY;
			x4 = x4 - centerX;
			y4 = y4 - centerY;
			x3 = -1 * x3;
			x4 = -1 * x4;
			x3 = x3 + centerX;
			y3 = y3 + centerY;
			x4 = x4 + centerX;
			y4 = y4 + centerY;
			g.drawLine((int)x3, (int)y3, (int)x4, (int)y4);

            x1 = x2;
            y1 = y2;
        }
    }

    public void paint(Graphics g)
    {
        requestFocus();
        offg.drawImage(backi, 0, 0, this);  // 背景の描画

        if(capture_mode_FLG)           // 制御点の描画
        {
            offg.setColor(Color.red);
            for(int i = 0; i < point[point_num].length; i++)
            {
                offg.fillRect(point[point_num][i].x-3,
                              point[point_num][i].y-3, 7, 7);
                offg.drawString(Integer.toString(i+1),
                              point[point_num][i].x-3,
                              point[point_num][i].y-6);
            }
        }

        for(int i = 0; i < point.length; i++)     // 曲線描画
        {
            if(capture_mode_FLG && point_num == i)
                BezierCurve(offg, Color.blue, point[i]);
            else BezierCurve(offg, Color.white, point[i]);
        }

        g.drawImage(offi, 0, 0, this);
    }

    public void update(Graphics g)
    {
        paint(g);
    }
}

