Ich wollte folgendes Javascript Beispiel konvertieren:
https://www.reddit.com/r/programming/comments/3hpnhv/that_mesmerizing_thing_in_18_lines_of_pure/
So sieht es aus: https://jsfiddle.net/gg19b2do/101/
Mein bisheriges Ergebnis funktioniert nicht ganz deckungsgleich. Erstmal rotiert die Javascript-Methode bei positiven Winkel-Werten im Uhrzeigersinn. Java's drawArc im Gegenuhrzeigersinn. Das koennte man durch vorgestelltem Minuszeichen fixen, aber das Ergebnis sieht noch nicht 100% aus.
Vielleicht hat jemand von Euch eine Idee?
https://www.reddit.com/r/programming/comments/3hpnhv/that_mesmerizing_thing_in_18_lines_of_pure/
So sieht es aus: https://jsfiddle.net/gg19b2do/101/
Mein bisheriges Ergebnis funktioniert nicht ganz deckungsgleich. Erstmal rotiert die Javascript-Methode bei positiven Winkel-Werten im Uhrzeigersinn. Java's drawArc im Gegenuhrzeigersinn. Das koennte man durch vorgestelltem Minuszeichen fixen, aber das Ergebnis sieht noch nicht 100% aus.
Vielleicht hat jemand von Euch eine Idee?
Java:
package experiment;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class EighteenLines extends JPanel {
double pos=0;
double pinc= 0.25;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D ctx = (Graphics2D) g;
ctx.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
ctx.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
ctx.setColor(Color.white);
ctx.fillRect(0, 0, this.getWidth(), this.getHeight());
ctx.setColor(Color.black);
ctx.setStroke(new BasicStroke(8));
for (int x = 0; x < 10; x++) {
int r = x * 10 + 4;
double st = ((pos * (x+1)) % 200)/100;
double et = (st + 1) % 2;
ctx.drawArc(100 - r, 100 - r, r * 2, r * 2, (int)(et * 180), ((int)(st * 180)));
pos = (pos + pinc) % 200;
}
pinc = .7 * ((100 - (Math.abs(100 - pos))) / 100);
if (pinc < .01) pinc = .01;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new EighteenLines());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public EighteenLines() {
int n = 200;
this.setSize(new Dimension(n ,n));
this.setPreferredSize(new Dimension(n ,n));
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
EighteenLines.this.repaint();
}
};
Timer timer = new Timer(0, taskPerformer);
timer.setDelay(100);
timer.start();
}
}