首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

何位大神解释一下 这段程序啥意思? 求多边形的

2013-03-26 
哪位大神解释一下 这段程序啥意思? 求多边形的 这是求多边形 顶点的,java做的, 循环里面是什么意思啊?List

哪位大神解释一下 这段程序啥意思? 求多边形的
 这是求多边形 顶点的,java做的, 循环里面是什么意思啊?

List<Point> getPoints(int n) {
        ArrayList<Point> ps = new ArrayList<Point>();
        int ox = getWidth()/2;
        int oy = getHeight()/2;
        double r = (ox>oy ? oy : ox)*0.9;
        double angle = 2*Math.PI/n;
        double startAngle = (Math.PI-angle)/2;
        for(int i=0; i<n; i++) {
            int x = (int)(ox+r*Math.cos(startAngle+i*angle));
            int y = (int)(oy+r*Math.sin(startAngle+i*angle));
            ps.add(new Point(x,y));
        }
[解决办法]
好吧,我讲详细点。

double angle = 2*Math.PI/n;
angle = 2*PI/n,意思是多边形相邻的两个顶点和中心点的连线的夹角,即360/n.
即增量。

  double startAngle = (Math.PI-angle)/2;
startAngle 是起始的角度,即第一个顶点到中心点的连线与水平线的夹角。

  for(int i=0; i<n; i++) {
  int x = (int)(ox+r*Math.cos(startAngle+i*angle));
r*cos(startAngle+i*angle)为第i个点在横轴上的投影。
  int y = (int)(oy+r*Math.sin(startAngle+i*angle));
r*Math.sin(startAngle+i*angle)为第i个点在纵轴上的投影。

图示:
何位大神解释一下 这段程序啥意思? 求多边形的

热点排行