Java 绘图练习1

要求绘制如下图形(PS:这个图形着实叫不上名字 =_=)

public void paint(final Graphics g)
{
    double theta = 0.0;
    double increemnt = 66*Math.PI/100.0;//设置旋转参数θ
    int x = 150;
    int y = 250;
    for(int i=0; i<1500;i++)
    {
        theta += increemnt;
        int radius = 100;
        int x1 = 150+ (int)(radius*Math.cos(theta));
        int y1 = 150 + (int)(radius*Math.sin(theta));
        g.drawLine(x, y, x1, y1);
        x = x1;
        y = y1;
            
    }
}

本质上是在两个圆上做功夫:

外圈是个大园,内圈是个小园,从大圈上的点做小圆的切线。如是重复。

切线的两端和圆心连接所得到的角度是固定的,之要保证角度的迭代,就可以画出这个图。

首先,确定大圆上的一点(x1,y1),确定一个角度(一般情况下可以绘制除了特殊角度,以及比较小的角度)

然后利用角度确定另一端(x2,y2)。

画第一条线

再将(x2,y2)赋值给(x1,y1),角度迭代,计算出新的(x2,y2)。