import java.awt.Stroke; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.Point; import javax.swing.event.*; import javax.swing.border.*; import java.awt.image.*; import java.awt.geom.*; import static java.lang.Math.*; /** * * Class spirosfericoc3 - Simulatore ciclosferico 3D e stereo * @author (Sergio Savoldelli.- wwww.savoldelli.net) * @version (number 3. - 07/2011 ) * */ public class spirosfericoc3 extends JApplet implements MouseListener, MouseMotionListener { public int mov1,mov2,mov3,mov4,k=200,n1=25,n2=1,p,c=255,px=250,py=290, w3=0,zz,zz2 ; public double aa,hh,k0,k02,r0,r02,k03,xe2,ye2, d,zi,i,a,pi2= PI*2,ci = 0, puntoy, puntox,puntoy2, puntox2,q2,a2,z,yz,q,ab5,ab6,ab7, ab5b,ab7b,incpasso,incpassob,ipassob,aa2,rg,rp,ii, incpasso2,incpassob2,ipassob2, pux3,puy3,pux3b,puy3b; Font font; Panel controlPanel, optionPanelColor, optionPanel0, optionPanel1; Scrollbar sliderR, sliderr,sliderOb ; private boolean movingCircleOut = false; String sliderTextr = " Cono Mobile (5 - 150): "; String sliderTextC = " - Stereo - "; Label sliderLabelR,sliderLabelr, sliderLabelO, sliderLabelC, sferalabel, titleLabel,auLabel; Checkbox insideCheckbox, outsideCheckbox; public void init() { Point bPoint = new Point(200,200); setSize(730, 500); setBackground(Color.black); controlPanel = new Panel(); controlPanel.setBackground(Color.black); controlPanel.setLayout(new GridLayout(8,1,1,1)); add("East", controlPanel); addMouseListener(this); addMouseMotionListener(this); auLabel = new Label("Author Sergio Savoldelli ", 1); font = new Font("Helvetica", Font.BOLD, 12); auLabel.setFont(font); auLabel.setBackground(Color.black); auLabel.setForeground(Color.cyan); controlPanel.add(auLabel); //////////////////////////// titleLabel = new Label("Spirosferico 3D ", 1); font = new Font("Helvetica", Font.BOLD, 17); titleLabel.setFont(font); titleLabel.setBackground(Color.black); titleLabel.setForeground(Color.cyan); controlPanel.add(titleLabel); ///** sferalabel=(new Label(" Raggio sfera = 200 ")); font = new Font("Helvetica", Font.BOLD, 13); sferalabel.setFont(font); controlPanel.setBackground(Color.black); sferalabel.setForeground(Color.yellow); controlPanel.add(sferalabel); sliderLabelr = new Label(sliderTextr + Integer.toString((int)n1)); font = new Font("Helvetica", Font.PLAIN, 12); sliderLabelr.setFont(font); sliderLabelr.setBackground(Color.black); sliderLabelr.setForeground(Color.white); controlPanel.add(sliderLabelr); sliderr = new Scrollbar(Scrollbar.HORIZONTAL,(int) n1, 1, 5, 151); controlPanel.add(sliderr); sliderLabelC = new Label(sliderTextC); font = new Font("Helvetica", Font.BOLD, 18); sliderLabelC.setFont(font); sliderLabelC.setBackground(Color.red); sliderLabelC.setForeground(Color.white); controlPanel.add(new Label(" ")); controlPanel.add(sliderLabelC); ////////////////////////////////////////////// optionPanel1 = new Panel(); optionPanel1.setLayout(new GridLayout(1, 2)); CheckboxGroup CircleInOutGroup = new CheckboxGroup (); insideCheckbox = new Checkbox("si", CircleInOutGroup, !movingCircleOut); outsideCheckbox = new Checkbox("no", CircleInOutGroup, movingCircleOut); insideCheckbox.setForeground(Color.green); outsideCheckbox.setForeground(Color.cyan); font = new Font("Helvetica", Font.BOLD, 18); insideCheckbox.setFont(font); outsideCheckbox.setFont(font); optionPanel1.add(insideCheckbox); optionPanel1.add(outsideCheckbox); controlPanel.add("East", optionPanel1); } public boolean handleEvent(Event ev) { if (ev.target instanceof Scrollbar) { int value = ((Scrollbar)ev.target).getValue(); if (ev.target == sliderr) { sliderLabelr.setText(sliderTextr + Integer.toString(value)); n1 = value; } repaint(); } if ( ev.target == insideCheckbox || ev.target == outsideCheckbox ) { repaint(); } return true; } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; BufferedImage bufimage; BufferedImage bi,co,bi2; Graphics2D bufimagegraf,bufimagegrafb ; Graphics2D big,cog,cogb; if (outsideCheckbox.getState()){ px=250;px=px+1250; py=225;py=py+1290; c=0; } if (insideCheckbox.getState()){ px=250; py=225; c= 255; } c=c; ////////////////////////////////////////////////////////////////// bi = (BufferedImage)createImage(600,600); big = bi.createGraphics(); big.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); big.setStroke(new BasicStroke(1.0f)); cog = bi.createGraphics(); cog.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); cog.setColor(new Color(0,c,0));//linea verde cog.setStroke(new BasicStroke(1.8f)); cogb = bi.createGraphics(); cogb.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); cogb.setColor(new Color(255,0,0));//linea rossa cogb.setStroke(new BasicStroke(1.8f)); bufimage = new BufferedImage(600, 600, BufferedImage.TYPE_4BYTE_ABGR); bufimagegraf= bufimage.createGraphics(); bufimagegraf.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); bufimagegraf.setStroke(new BasicStroke(2.5f)); bufimagegraf.setColor(new Color(0,c,0)); bufimagegrafb= bufimage.createGraphics(); bufimagegrafb.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); bufimagegrafb.setStroke(new BasicStroke(2.5f)); bufimagegrafb.setColor(new Color(255,255-c,0)); rg = 200; rp= n1; a=12; for( double hh2=-PI;hh2<=PI;hh2=(hh2+PI/(a/1.25))){ q= abs(cos (hh2)*hh2)*3; q2=0; for(double aab=(-PI);aab<=(PI);aab=aab+PI/(a*3)){ q2=(q2+1); xe2= aab; ye2= hh2; double k02= (Math.cos(xe2)*Math.cos(ye2)*(rg))+sin(xe2)*5; double y02= (Math.cos(xe2)*Math.sin(ye2)); double z02= (Math.sin(xe2)*(rg)); double k0= (Math.cos(xe2)*Math.cos(ye2+0.15)*(rg)); double y0= (Math.cos(xe2)*Math.sin(ye2+0.01)); double z0= (Math.sin(xe2)*(rg)); double x02=(k02+250); double r02= (y02)+225+((z02)); double x0=(k0+258); double r0= ((y0+233+z0)); cog.draw( new Ellipse2D.Double((int)(x02),(int)(r02),q/3,q)); cogb.draw( new Ellipse2D.Double((int)(x0),(int)(r0),q/3,q)); } } zi=0; a=pi2/k; i=sqrt(2); q= (rg/i)-(rp/i); ci=0; for( ii=0;ii= 1 ){continue fuori; } } } ci=0; g2.drawImage(bi,0,0, this); g2.drawImage(bufimage,0,0, this); } public void mouseClicked(MouseEvent et) { Object source = et.getSource(); int aaaa= et.getButton(); } public void mousePressed(MouseEvent e) { mov2 = e.getX(); int mov3 = e.getY(); if (e.isAltDown()) { } if (e.isShiftDown()) { } } public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} public void mouseDragged(MouseEvent e) { mov1 = e.getX(); mov4 = e.getY(); z=z+0.08*((mov1-mov2));mov2=mov1; yz=yz +0.02* ((mov4-mov3));mov3=mov4; repaint(); e.consume(); } }