/* * Copyright (c) 1998 Kevan Stannard. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and * without fee is hereby granted. * * Please note that this software comes with * NO WARRANTY * * BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED * BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES * PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS * TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME * THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. * * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER * PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, * INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE * THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED * BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER * OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */ import java.applet.*; import java.awt.*; /** * Sphere is simply a 'point' type sphere. * * @version 1.0 * @author Kevan Stannard */ public class Sphere extends Object3D { double density; double radius; // // create the rotation matrices // Matrix2D xRotationMatrix = new Matrix2D(3,3); Matrix2D yRotationMatrix = new Matrix2D(3,3); Matrix2D zRotationMatrix = new Matrix2D(3,3); // // set rotation defaults // double xTheta; double yTheta; double zTheta; // // trig tables // private final int NUM_VALUES = 255; double cosTable[] = new double[NUM_VALUES]; double sinTable[] = new double[NUM_VALUES]; public Sphere() { this(50, 32); // initialise the trig tables for (int i=0; i0) { int x = xpos + (int) vertices[v].x; int y = ypos + (int) vertices[v].y; // Bug in Netscape causes getClipRect to // return a null value, so, we pass the width and // height as parameters instead //int width = g.getClipRect().width; //int height = g.getClipRect().height; int width = w; int height = h; if (x<0) x = 0; if (y<0) y = 0; if (x>width-1) x = width-1; if (y>height-1) y = height-1; g.drawLine(x, y, x, y); } } } }