1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| private Area addShadow(Rectangle2D b) {
Point2D p1 = new Point2D.Double(b.getX(), b.getY());
Point2D p2 = new Point2D.Double(b.getX()+b.getWidth(), b.getY());
Point2D p3 = new Point2D.Double(b.getX()+b.getWidth(), b.getY()+b.getHeight());
Point2D p4 = new Point2D.Double(b.getX(), b.getY()+b.getHeight());
double r = ellipse.getWidth()/2;
Point2D e = new Point2D.Double(ellipse.getX() + r, ellipse.getY() + r);
double d1 = e.distance(p1);
double d2 = e.distance(p2);
double d3 = e.distance(p3);
double d4 = e.distance(p4);
Point2D t1 = new Point2D.Double();
Point2D t2 = new Point2D.Double();
Point2D t3 = new Point2D.Double();
Point2D t4 = new Point2D.Double();
if(d1<=d2 && d1<=d3 && d1<=d4){
t1 = new Point2D.Double(p2.getX()*(r/d2), p2.getY()*(r/d2));//p2
t2 = new Point2D.Double(p4.getX()*(r/d4), p4.getY()*(r/d4));//p4
t3 = p4;
t4 = p2;
}else if(d2<=d1 && d2<=d3 && d2<=d4){
t1 = new Point2D.Double(p3.getX()*(r/d3), p3.getY()*(r/d3));//p3
t2 = new Point2D.Double(p1.getX()*(r/d1), p1.getY()*(r/d1));//p1
t3 = p1;
t4 = p3;
}else if(d3<=d1 && d3<=d2 && d3<=d4){
t1 = new Point2D.Double(p4.getX()*(r/d4), p4.getY()*(r/d4));//p4
t2 = new Point2D.Double(p2.getX()*(r/d2), p2.getY()*(r/d2));//p2
t3 = p2;
t4 = p4;
}else if(d4<=d1 && d4<=d2 && d4<=d3){
t1 = new Point2D.Double(p1.getX()*(r/d1), p1.getY()*(r/d1));//p1
t2 = new Point2D.Double(p3.getX()*(r/d3), p3.getY()*(r/d3));//p3
t3 = p1;
t4 = p3;
}
Area returnArea = new Area();
Arc2D arc = this.createArc2D(t1, t2, new Point2D.Double(ellipse.getX(), ellipse.getY()));
Area area = new Area(arc);
Polygon poly = new Polygon();
//this.add(area);
poly.addPoint((int)t1.getX(), (int)t1.getY());
poly.addPoint((int)t2.getX(), (int)t2.getY());
poly.addPoint((int)t3.getX(), (int)t3.getY());
poly.addPoint((int)t4.getX(), (int)t4.getY());
area = new Area(poly);
returnArea.add(area);
return returnArea;
} |
Partager