====================================GeometryUtil.java====================================
importjava.awt.geom.Point2D;
publicclassGeometryUtil
{
//
两点之间的距离
publicstaticdoubledistanceOfPoints(Point2D
p1, Point2D p2) {
doubledisX
= p2.getX() - p1.getX();
doubledisY
= p2.getY() - p1.getY();
doubledis
= Math.sqrt(disX * disX + disY * disY);
returndis;
}
//
两点的中点
publicstaticPoint2D
middlePoint(Point2D p1, Point2D p2) {
doublex
= (p1.getX() + p2.getX()) / 2;
doubley
= (p1.getY() + p2.getY()) / 2;
returnnewPoint2D.Double(x,
y);
}
//
在两点所在直线上,以从startPoint到endPoint为方向,离startPoint的距离disToStartPoint的点
publicstaticPoint2D
extentPoint(Point2D startPoint, Point2D endPoint,doubledisToStartPoint)
{
doubledisX
= endPoint.getX() - startPoint.getX();
doubledisY
= endPoint.getY() - startPoint.getY();
doubledis
= Math.sqrt(disX * disX + disY * disY);
doublesin
= (endPoint.getY() - startPoint.getY()) / dis;
doublecos
= (endPoint.getX() - startPoint.getX()) / dis;
doubledeltaX
= disToStartPoint * cos;
doubledeltaY
= disToStartPoint * sin;
returnnewPoint2D.Double(startPoint.getX()
+ deltaX, startPoint.getY() + deltaY);
}
}
====================================Pie.java====================================
importjava.awt.Color;
importjava.awt.geom.Arc2D;
importjava.awt.geom.Area;
importjava.awt.geom.GeneralPath;
importjava.awt.geom.Point2D;
classPie
{
privateArc2Darc;//
这里的弧并不是圆上的一弧,而是椭圆的一部分.
privateAreafrontSite;
privateArealeftSite;
privateArearightSite;
privateColorcolor;
privatePieselectedPie;
privatePoint2DarcMiddle;
privatePoint2DlabelPosition;
privatedoublevalue;
privateintshadowDepth;
privatedoubleselectedShiftDis;//
被选中的饼图在他的中线上移动的距离
publicPie(Arc2D
arc, Color color,doublevalue)
{
this(arc,
color, value, 10, 30);
}
publicPie(Arc2D
arc, Color color,doublevalue,intshadowDepth,doubleselectedShiftDis)
{
this.arc=
arc;
this.color=
color;
this.value=
value;
this.selec