アルキメデスの螺線
これを見ると、何故だか判りませんが、頭がくらくらしてきます、本当に何時間もの間、気分も悪くなって、はきそうになります。故意でこんなものを作ったわけでは有りません。作っているうちに気持ちが悪くなるのに気づきました。自信のない方は他のページにジャンプしてください。アーまだ気持ち悪いのが残っている。
注意!!注意!!
プログラムミスがあります。絶対にクリックしないでください。クリックするとresume(),susped()を繰り返します。6回クリックすると本当に気分が悪くなります。しかも、パソコンをリセットしないと動きつづけてしまうことが判明しました。
/*
A basic extension of the java.applet.Applet class
*/
import java.awt.*;
import java.applet.*;
public class Applet1 extends Applet implements Runnable
{
Thread th;
int x,y,ang=0,x1,y1;
double a=100,r;
String col;
double rad=(Math.PI)/180;
int flag=0;
int clickCount;
int sleepTime=100;
Image offscreenImg;
Graphics offscreenG;
public void init()
{
// Take out this line if you
don't use symantec.itools.net.RelativeURL or
symantec.itools.awt.util.StatusScroller
symantec.itools.lang.Context.setApplet(this);
offscreenImg=createImage(size().width,size().height);
offscreenG=offscreenImg.getGraphics();
// This code is automatically
generated by Visual Cafe when you add
// components to the visual
environment. It instantiates and initializes
// the components. To modify
the code, only use code syntax that matches
// what Visual Cafe can
generate, or Visual Cafe may be unable to back
// parse your Java file into
its visual environment.
//{{INIT_CONTROLS
setLayout(null);
setSize(788,571);
add(label1);
label1.setBounds(672,108,67,25);
//}}
//{{REGISTER_LISTENERS
SymMouse aSymMouse = new
SymMouse();
this.addMouseListener(aSymMouse);
//}}
}
//{{DECLARE_CONTROLS
java.awt.Label label1 = new java.awt.Label();
//}}
public void start()
{
if(th==null)
{
th=new Thread(this);
th.start();
}
}
public void run()
{
while(true)
{
ang=ang+10;
if (ang>7000)
{
ang=0;
}
repaint();
try
{
th.sleep(sleepTime);
}
catch(InterruptedException e)
{
}
}
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
label1.setText(""+ang);
offscreenG.setColor(Color.red);
r=2*(rad*ang); //これが極方程式です
x=(int)(r*Math.cos(rad*ang));
y=(int)(r*Math.sin(rad*ang));
offscreenG.fillOval(x+300, -y+200, 10, 10);
offscreenG.setColor(Color.blue);
r=2*(rad*(ang+360));
x=(int)(r*Math.cos(rad*(ang+90)));
y=(int)(r*Math.sin(rad*(ang+90)));
offscreenG.fillOval(x+300, -y+200, 10, 10);
offscreenG.setColor(Color.green);
r=2*(rad*(ang+720));
x=(int)(r*Math.cos(rad*(ang+180)));
y=(int)(r*Math.sin(rad*(ang+180)));
offscreenG.fillOval(x+300, -y+200, 10, 10);
g.drawImage(offscreenImg, 0,0,this);
offscreenG.setColor(Color.yellow);
r=2*(rad*(ang+1080));
x=(int)(r*Math.cos(rad*(ang+180)));
y=(int)(r*Math.sin(rad*(ang+180)));
offscreenG.fillOval(x+300, -y+200, 10, 10);
g.drawImage(offscreenImg, 0,0,this);
}
public void stop()
{
if(th !=null)
{
th.stop();
th=null;
}
}
class SymMouse extends java.awt.event.MouseAdapter
{
public void
mouseClicked(java.awt.event.MouseEvent event)
{
Object object = event.getSource();
if
(object == Applet1.this)
Applet1_MouseClicked(event);
}
}
void Applet1_MouseClicked(java.awt.event.MouseEvent
event)
{
// to do: code goes here.
clickCount++;
flag=clickCount%6;
switch(flag)
{
case 1:
th.suspend();
break;
case 2:
th.resume();
break;
case 3:
sleepTime=500;
break;
case 4:
sleepTime=50;
break;
case 5:
sleepTime=10;
break;
case 6:
sleepTime=1;
break;
}
}
}