@Override
	protected void onDraw(Graphics g) {
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, canvasWidth, canvasHeight);
		
		int orgX = 50;
		int orgY = 500;
		int rangeT = 400;
		int y1 = 0, y2 = 0;
		int x1 = 0, x2 = 0;
		
		tweener.startTween(0, rangeT, 0, rangeT, rangeT);
		int[] nums = new int[rangeT + 1];
		for (int i = 0; i < rangeT + 1; i++) {
			nums[i] = (int)tweener.currentX();
			tweener.update();
		}
		int[] numsGeometric = new int[rangeT + 1];
		float lastNum = 0;
		for (int i = 0; i < rangeT + 1; i++) {
			numsGeometric[i] = (int)lastNum;
			lastNum += (rangeT - lastNum) / 3;
		}
		
		g.setColor(Color.BLACK);
		g.drawLine(orgX, orgY - rangeT, orgX, orgY);
		g.drawLine(orgX, orgY, orgX + rangeT, orgY);
		g.drawLine(orgX + rangeT, orgY, orgX + rangeT, orgY - rangeT);
		g.drawLine(orgX + rangeT, orgY - rangeT, orgX, orgY - rangeT);
		for (int t = 0; t < rangeT; t++) {
			x1 = t;
			x2 = t + 1;
			y1 = nums[t];
			y2 = nums[t + 1];
			x1 = orgX + x1;
			x2 = orgX + x2;
			y1 = orgY - y1;
			y2 = orgY - y2;
			g.drawLine(x1, y1, x2, y2);
		}
		
		g.setColor(Color.RED);
		for (int t = 0; t < rangeT; t++) {
			x1 = t;
			x2 = t + 1;
			y1 = numsGeometric[t];
			y2 = numsGeometric[t + 1];
			x1 = orgX + x1;
			x2 = orgX + x2;
			y1 = orgY - y1;
			y2 = orgY - y2;
			g.drawLine(x1, y1, x2, y2);
		}
		
		if (tweener != null) {
			String title = "(" + (currentTween + 1) + "/" + 
					TWEENERS.length + ")" +
					tweener.getClass().getSimpleName();
			setFrameTitle(title);
		}
	}