Cześć, mam problem, mianowicie napisalem program rysujacy trochoide (tak wyglada ta krzywa: http://curvebank.calstatela.edu/cycloidmaple/trochoid22.gif). Jak latwo mozecie zauwazyc, niektore wartosci iksow (X) przyjmuja dwa igreki (Y). Ta biblioteka laczy punkty w kolejnosci nanoszenia na wykres czego skutkiem sa zamazane (wypelnione kolorem) te pętelki. Macie moze jakis pomysl, co zrobic, zeby na wykresie widoczny byl sam kontur? Moze np. nanoszenie punktow bardzo gesto bez laczenia ich ale jak to zrobic w praktyce? Z gory dzieki za odp.
Mój kod:
package kodpaczka;
/**
*
* @author USER
*/
import java.awt.Color;
import java.awt.Shape;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class RysujPanel {
public RysujPanel(){
}
private static JFreeChart createChart(XYDataset dataset){
JFreeChart chart = ChartFactory.createXYLineChart(
"TROCHOIDA", "Zakres [rad]",
"Wartosc ", dataset, PlotOrientation.VERTICAL,
true, false, false);
chart.setBackgroundPaint(Color.lightGray);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setBackgroundPaint(Color.white);
plot.setDomainGridlinePaint(Color.black);
plot.setRangeGridlinePaint(Color.black);
return chart;
}
private static XYDataset createDataset() {
int k = 100000;
XYSeries s1 = new XYSeries("TROCHOIDA");
double step = Dane.zakres/(double)(k);
// double[] x = new double[100000];
// double[] y = new double[100000];
for (int i = 0; i < k; i++) {
// x[i] = i * step * Dane.a - Dane.b * Math.sin(i * step);
// y[i] = Dane.a - Dane.b * Math.cos(i * step);
double x = i * step * Dane.a - Dane.b * Math.sin(i * step);
double y = Dane.a - Dane.b * Math.cos(i * step);
s1.add(x,y);
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(s1);
return dataset;
}
public static JPanel createWoPanel() {
JFreeChart chart = createChart(createDataset());
return new ChartPanel(chart);
}
}