教大家使用 Java 画圆

2021-04-28 23:14:14 +08:00
 pxiphx
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @author erniu.wzh
 */
public class AWTGraphicsDemo extends Frame {

    public AWTGraphicsDemo() {
        super("Circle");
        prepareGUI();
    }

    public static void main(String[] args) {
        AWTGraphicsDemo awtGraphicsDemo = new AWTGraphicsDemo();
        awtGraphicsDemo.setVisible(true);
    }

    private void prepareGUI() {
        setSize(1000, 1000);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
    }

    @Override
    public void paint(Graphics g) {
        draw(g, 500, 900, 0);
    }

    private void draw(Graphics g, double x, double y, double s) {
        if (s > 3.14 * 2) {
            return;
        }
        point(g, x, y);
        s += 0.314 / 180;
        draw(g, x + Math.cos(s) * 400 * 0.314 / 180, y - Math.sin(s) * 400 * 0.314 / 180, s);
    }

    private void point(Graphics g, double x, double y) {
        g.drawLine((int) x, (int) y, (int) x, (int) y);
    }
}
2255 次点击
所在节点    Java
5 条回复
lyusantu
2021-04-29 09:21:31 +08:00
无注释差评
Kasumi20
2021-04-29 09:26:34 +08:00
画圆不是基操吗?画个贝塞尔曲线试试
qW7bo2FbzbC0
2021-04-29 09:56:22 +08:00
@Kasumi20 #2 +1
no1xsyzy
2021-04-29 11:50:10 +08:00
你这是沿着切向和法向偏转算过去?还是个尾递归?(虽然 Java 应当是没有尾调优化)
mind3x
2021-04-29 13:22:45 +08:00
别闹了,Bresenham 算法了解一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/773949

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX