以动画的形式画多边形(JAVA)

最初的目标

给定正多边形中心,给定正多边形边数,画一个正多边形出来。

需要使用的数学知识有

1.正多边形任意相邻两个顶点所成夹角相等,并且其度数为360/N(边数)

2.三角函数的知识,从下图可以得到任意顶点Px=(CenterX+cos(a*x),CenterY+sin(a*x));其中x为下标,(CenterX,CenterY)为中心坐标

接着实现就好;


以动画的形式画多边形(JAVA)_第1张图片
图摘自文章https://www.jianshu.com/p/6d84b901becd


实现之后

 在上面的基础上,做了如下改动

1.只单纯画顶点,而不连接边

2.让多边形的顶点以一定的概率成对连线,并且以动画的形式实现。具体代码如下

```

import edu.princeton.cs.algs4.StdDraw;

import edu.princeton.cs.algs4.StdRandom;

import java.util.Arrays;

public class StdTest {

    public static void main(String[] args)

    {

      int N=10;

      double rate=0.41;

      double cirSize=5;

      double distance=5;

      int totalSize=50;

//      Point[] points=new Point[N];

      drawPolygon(45,rate);

    }

    static void drawPolygon(int N,double rate)

    {

      StdDraw.setCanvasSize(1000,1000);

      StdDraw.setXscale(0,N);

      StdDraw.setYscale(0,N);

      StdDraw.setPenRadius(0.01);

        double[] xs=new double[N];

        double[] ys=new double[N];

        double centerX=N/2.0;

        double centerY=N/2.0;

        xs[0]=N;

        ys[0]=N/2.0;

        for(int i=1;i

        {

            double radis=Math.PI*2/N*i;

            xs[i]=Math.cos(radis)*N/2+centerX;

            ys[i]=Math.sin(radis)*N/2+centerY;

        }

   //     xs[N]=N;

      //  xs[N]=N/2.0;

        System.out.println(Arrays.toString(xs));

        System.out.println(Arrays.toString(ys));

        for(int i=0;i

        {

            StdDraw.point(xs[i],ys[i]);

        }

        int startUp=0;

        while (startUp

        {

            for(int i=startUp+1;i

            {

                if(StdRandom.random()<=rate)

                {

                    StdDraw.line(xs[startUp],ys[startUp],xs[i],ys[i]);

                    try {

                        Thread.sleep(500);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                }

            }

            startUp++;

        }

    }

}

```

程序所依赖的库可以在算法第四版这本书的配套网站下下载。程序比较简单,也没有什么可说的点。但是笔者表示虽然程序很简单。但是实现之后看起来的效果非常解压。

你可能感兴趣的:(以动画的形式画多边形(JAVA))