/**************************************************************************** ** COPYRIGHT (C): 1997 Cay S. Horstmann. All Rights Reserved. ** PROJECT: Practical OO Development with C++ and Java ** FILE: CloudApplet.java ** PURPOSE: to show that Applet is a framework (ch. 19) ** VERSION 1.0 ** PROGRAMMERS: Cay Horstmann (CSH) ** RELEASE DATE: 3-15-97 (CSH) ** UPDATE HISTORY: ****************************************************************************/ import java.applet.*; import java.awt.*; import java.util.*; public class CloudApplet extends Applet { public boolean mouseDown(Event evt, int x, int y) { _points.addElement(new Point(x, y)); repaint(); return true; } public void paint(Graphics g) { for (int i = 0; i < _points.size(); i++) { Point p = (Point)_points.elementAt(i); g.drawOval(p.x - 2, p.y - 2, 5, 5); } if (regression()) { int xright = size().width; g.drawLine(0, (int)b, xright, (int) (m * xright + b)); } } private boolean regression() { double sx = 0; double sxx = 0; double sy = 0; double sxy = 0; int n = _points.size(); if (n < 2) return false; for (int i = 0; i < n; i++) { Point p = (Point)_points.elementAt(i); int x = p.x; int y = p.y; sx += x; sy += y; sxx += x * x; sxy += x * y; } double den = sxx - sx * sx / n; if (den == 0) return false; m = (sxy - sx * sy / n) / den; b = (sy - m * sx) / n; return true; } private Vector _points = new Vector(); private double m; private double b; }