圆上的点可以指定为角度θ的函数:

x = a + r cos(θ)

y = b + r sin(θ)

这里,示出了2π/ 8的增量。

附录:正如@ChristofferHammarström在评论中所建议的那样,这个修改过的例子减少了原始数字中的幻数 。 所需的点数成为构造函数的参数。 它还使渲染适应容器的大小。

/** @see https://stackoverflow.com/questions/2508704 */

public class CircleTest extends JPanel {

private static final int SIZE = 256;

private int a = SIZE / 2;

private int b = a;

private int r = 4 * SIZE / 5;

private int n;

/** @param n the desired number of circles. */

public CircleTest(int n) {

super(true);

this.setPreferredSize(new Dimension(SIZE, SIZE));

this.n = n;

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setRenderingHint(

RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g2d.setColor(Color.black);

a = getWidth() / 2;

b = getHeight() / 2;

int m = Math.min(a, b);

r = 4 * m / 5;

int r2 = Math.abs(m - r) / 2;

g2d.drawOval(a - r, b - r, 2 * r, 2 * r);

g2d.setColor(Color.blue);

for (int i = 0; i < n; i++) {

double t = 2 * Math.PI * i / n;

int x = (int) Math.round(a + r * Math.cos(t));

int y = (int) Math.round(b + r * Math.sin(t));

g2d.fillOval(x - r2, y - r2, 2 * r2, 2 * r2);

}

}

private static void create() {

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.add(new CircleTest(9));

f.pack();

f.setVisible(true);

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

create();

}

});

}

}

java画个半径为1地圆_java - 绘制一个半径为圆的圆并围绕边缘指向 - 堆栈内存溢出...相关推荐

  1. 用java画网状图_如何在背景中绘制一个带网格线的漂亮条形图?

    我是Matlab的新手 . 我做了一个实验 . 我需要帮助将结果绘制在2条形图(具有不同颜色)中,结果图形需要有网格线 . 有人建议使用非常matlap的代码输出一个漂亮的情节吗? 数据如下: x轴是 ...

  2. oracle 异常返回值,oracle - java.sql.SQLException:无效的列类型:调用具有行类型返回值的函数时为1111 - 堆栈内存溢出...

    我在一个名为" MyPackage"的Oracle软件包中有一个函数: FUNCTION MyFunction(name IN VARCHAR2) RETURN MyTable%r ...

  3. java画满天星_上机题目(初级)- 绘制满天星(Java)

    使用画布和画笔绘制一个满天星的小程序,十分简单,适合初学者学习使用: import java.awt.Color; import java.awt.Frame; import java.awt.Gra ...

  4. python turtle画滑稽_使用python的turtle函数绘制一个滑稽表情的方法

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  5. java 获取组件大小_java - 如何初始化取决于组件大小的图像抓取? - 堆栈内存溢出...

    如果我正确理解问题,那么您的方法会有些落后. 与其让ImageNavigator告诉ZoomedImage绘制哪个子图像,不如让ZoomedImage在绘制时询问ImageNavigator(通过重写 ...

  6. java repaint 没反应_java - 为什么repaint()在我的JPanel上不起作用? - 堆栈内存溢出...

    我制作了自己的JPanel子类,称为SubPatternPanel . 我想在框架中使用它来绘制网格,但是当我从框架中为SubPatternPanel调用repaint() ,它不起作用. 运行时,框 ...

  7. java写一个会动的圆_JAVA实现一个圆形的移动,画出来的圆形移动,我的圆它不动呀...

    展开全部 import java.awt.Graphics; import java.awt.Image; import javax.swing.JFrame; public class JoinDe ...

  8. Java如何定义三个圆_java – 以编程方式查找三个圆的交叉点

    你可以从 C code获得帮助.把它移植到JAVA不应该是具有挑战性的.说明是 here.搜索/滚动到:两个圆的交点 使用此方法,找到任意两个圆的交点..让我们说(x,y).现在,只有当中心与点x,y ...

  9. java画篮球_PS教程!手把手教你绘制炫酷的科比篮球海报

    编者按:科蜜朋友来收教程咯!今天来一个科比飞身投篮的海报教程,效果酷炫难挡,过程细致入微,操作界面全中文,保证新手也可以轻松学会,周末来一发吧. _projava_大牛系列教程合集: 下面开始我的绘制 ...

最新文章

  1. Hive的基本操作-自定义函数
  2. 开启应用的时候总是以管理员身份打开的解决方案
  3. java excutorthread_Java中ThreadPoolExecutor的参数理解
  4. 浏览器打印设置横向打印_爱普生打印机无线连接设置
  5. IoT Studio可视化搭建平台编辑历史功能的思考与探索
  6. bzoj2285 [SDOI2011]保密 分数规划spfa+最小割
  7. 计算连续登陆最大天数
  8. c++删除文件delete_关于macos删除快捷键,你知道这些区别用法吗?
  9. Linux使用——Linux命令——CentOS7防火墙使用
  10. 中国大学MOOCPython语言程序设计基础学习笔记和课后练习5-6周(南京邮电大学)
  11. 计算机考试如何截屏,教你6种电脑截屏的小技巧-电脑怎么截图
  12. Stadia云游戏平台
  13. 实战分享|作为AI小白,如何争取AI产品经理offer
  14. 2021CCF BDCI图书推荐系统竞赛baseline
  15. php查询google pr值接口api介绍,php获取网站谷歌pr值方法
  16. 解决 Docker容器因 iptables无法启动的问题
  17. 2022-8-1----Android10.0(MTK)-----修改 ro 属性
  18. 芜湖五年制计算机公办学校,芜湖15所中职五年制学校
  19. 蛛网时代:数据大爆炸下的数据可视化
  20. 史上最牛逼、最方便的刷屏程序(QQ和其它)

热门文章

  1. Squid 代理服务器应用大全
  2. prefixspan java_PrefixSpan序列模式挖掘算法
  3. c语言二维数组参数传入,C语言二维数组、参数传递的理解
  4. 国内唯一,阿里云挺进 Forrester 数据流分析报告“强劲表现者”象限
  5. 为什么我要用C写游戏 适合自己的才是最好的
  6. VR游戏开发者如何避免“移动引起眩晕”
  7. 入职体检——项目列表(11项)
  8. 【蓝桥杯Java_C组·从零开始卷】第七节、递归
  9. 常见Java面试题 抽象类能使用 final 修饰吗?
  10. 分界符 EOF 不使用反斜杠转义的技巧