I'm trying to draw a polygon with AndroidPlot
library.
I'm successfully drawing the four points, but it draws only 3 sides of the polygon. (it's not closing the polygon)
The polygon should be filled. How can I achieve this?
Thanks!
Edit:
I'm firstly drawing a point and then the polygon, because I have to show if that point will be inside the polygon.
private XYPlot plot;
plot = (XYPlot) findViewById(R.id.graph);
seriesPointFormat = new LineAndPointFormatter(
null, // line color
Color.rgb(5, 100, 150), // point color
null, // fill color
new PointLabelFormatter());
float[] xTol = intent.getExtras().getFloatArray("tolerancesX");
float[] yTol = intent.getExtras().getFloatArray("tolerancesY");
Float[] xTolerances = new Float[xTol.length];
Float[] yTolerances = new Float[yTol.length];
for(int i = 0; i< xTol.length; i++)
xTolerances[i] = xTol[i];
for(int i = 0; i< yTol.length; i++)
yTolerances[i] = yTol[i];
//Example
x=0.35f;
y=0.65f;
//Turn the above arrays into XYSeries':
XYSeries seriesPoint = new SimpleXYSeries(
Arrays.asList(x),
Arrays.asList(y),
"point"); // Set the display title of the series
plot.getGraphWidget().setDomainValueFormat(new DecimalFormat("##.###"));
// add a new series' to the xyplot:
plot.addSeries(seriesPoint, seriesPointFormat);
XYSeries seriesPolygon = new SimpleXYSeries(
Arrays.asList(xTolerances),
Arrays.asList(yTolerances),
"Polygon");
LineAndPointFormatter seriesPolygonFormat = new LineAndPointFormatter(
Color.rgb(500, 0, 0), // line color
Color.rgb(500, 100, 0), // point color
null,
new PointLabelFormatter());
seriesPolygonFormat.getLinePaint().setStrokeWidth(2);
plot.addSeries(seriesPolygon, seriesPolygonFormat);
The answer is obvious, stupid me...(Facepalm)
You just have to add the first point at the end of the array.
Float[] xTolerances = new Float[xTol.length+1];
Float[] yTolerances = new Float[yTol.length+1];
for(int i = 0; i< xTol.length; i++)
xTolerances[i] = xTol[i];
//add here the first x coordinate at the end of the array
xTolerances[xTol.length] = xTol[0];
for(int i = 0; i< yTol.length; i++)
yTolerances[i] = yTol[i];
//add here the first x coordinate at the end of the array
yTolerances[yTol.length] = yTol[0];
And to fill in the polygon:
LineAndPointFormatter seriesPolygonFormat = new LineAndPointFormatter(
Color.rgb(500, 0, 0), // line color
Color.rgb(500, 100, 100), // point color
Color.argb(50, 200, 0, 0), //fill color with alpha, to make the fill transparent
new PointLabelFormatter());
I will not cancel the question, maybe will be useful to someone.