
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.lang.*;

class ParametricSphere2 extends ParametricSurface2
{
	private static double cx;
	private static double cy;
	private static double cz;
	private static double r;
	private static double theta;
	private static double phi;
	
	
	
	static int i=0;
	
	static double tempQuad[][]=new double[500][6];
	
//	static double temporary[][]=new double[500][6];

	public ParametricSphere2()
	{
		this.cx=0;
		this.cy=0;
		this.cz=0;
		this.r=0;
	}
	
		
	public ParametricSphere2(double cx, double cy, double cz, double r)
	{
		this.cx=cx;
		this.cy=cy;
		this.cz=cz;
		this.r=r;
	}
	
	public static void draw(Graphics g, double matrix[][])
	{
		double e=0.05;
		for (double v = 0 ; v < 1 ; v += e)
   			for (double u = 0 ; u < 1 ; u += e,i++)
   			{
      			
      			drawQuad(g,matrix, x(u,v),y(u,v),z(u,v),x(u+e,v),y(u+e,v),z(u+e,v),x(u+e,v+e),y(u+e,v+e),z(u+e,v+e),x(u,v+e),y(u,v+e),z(u,v+e));
      			
      			
      			tempQuad[i][0]=tempM[0];
      			tempQuad[i][1]=tempM[1];
      			tempQuad[i][2]=tempM[2];
      			
      			      			
     /* 			
      			tempQuad[i][0]=x(u,v);
      			tempQuad[i][1]=y(u,v);
      			tempQuad[i][2]=z(u,v);
      			
      			*/
      			
      			if(i>399)
      				i=0;

      			
      		}
      		

    }
    
   
	public static double x(double u, double v) 
	{ 
		theta = 2*Math.PI*u; 
		phi = (Math.PI*v) - (Math.PI/2); 
		return (r*Math.cos(theta)*Math.cos(phi) + cx); 

	
	}
	
	public static double y(double u, double v) 
	{ 
		theta = 2*Math.PI*u;
		phi = (Math.PI*v)-(Math.PI/2); 
		return (r*Math.sin(phi) + cy); 
	
	}
	
	public static double z(double u, double v) 
	{ 
		theta = 2*Math.PI*u;
		phi = (Math.PI*v)-(Math.PI/2); 
		return (-r*Math.sin(theta)*Math.cos(phi) + cz); 

	}
	
	
	
}


