package info.monitorenter.gui.chart.demos; import info.monitorenter.gui.chart.Chart2D; import info.monitorenter.gui.chart.ITrace2D; import info.monitorenter.gui.chart.traces.Trace2DSimple; import info.monitorenter.gui.chart.views.ChartPanel; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JPanel; /** * Two charts aligned vertically (via * {@link Chart2D#setSynchronizedXStartChart(Chart2D)}) that display geometric * forms backed by mathematics I do not understand (any more) ;-) . * <p> * * * @author Jason S, modified by Achim Westermann * */ public class VerticalStackedChartsWithParametricSpirals { public VerticalStackedChartsWithParametricSpirals(JPanel panel) { panel.setLayout(new BorderLayout()); panel.setPreferredSize(new Dimension(800,500)); final Chart2D[] charts = new Chart2D[2]; for (int i = 0; i < 2; ++i) { charts[i] = new Chart2D(); charts[i].setUseAntialiasing(true); } panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(new ChartPanel(charts[0])); panel.add(new ChartPanel(charts[1])); ITrace2D trace; trace = new Trace2DSimple(); charts[0].addTrace(trace); for (int i = 0; i < 10000; ++i) { double t = i/10000.0; trace.addPoint(t*Math.cos(t*20*Math.PI), t*Math.sin(t*20*Math.PI)); } ITrace2D trace2 = new Trace2DSimple(); ITrace2D trace3 = new Trace2DSimple(); charts[1].addTrace(trace2); charts[1].addTrace(trace3); final double ay = 1; for (int i = 0; i < 10000; ++i) { double t = i/10000.0; trace2.addPoint(Math.cos(t*2*Math.PI)+0.2*Math.cos(t*20*Math.PI), ay*(Math.sin(t*2*Math.PI)+0.2*Math.sin(t*20*Math.PI))); trace3.addPoint(Math.cos(t*2*Math.PI)-0.2*Math.cos(t*20*Math.PI), ay*(Math.sin(t*2*Math.PI)-0.2*Math.sin(t*20*Math.PI))); } trace3.setColor(Color.RED); trace3.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10, new float[]{10, 10},0)); } public static void main(String[] args) { JFrame frame = new JFrame("Vertical stacked chart"); JPanel panel = new JPanel(); frame.setContentPane(panel); new VerticalStackedChartsWithParametricSpirals(panel); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }