我想用java实现一个圆周上均匀分布n个点,该怎么做??谢谢各位了。 我的思想是采用极坐标,可是由于我对java了解很少,不知道可行不?还有什么好的建议吗?非常感谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Circle2D{ public Circle2D(double originX, double originY, double radius)throws Exception{ this.m_origin = new Point2D.Double(originX, originY); this.m_radius = radius; formCircle(); }private void formCircle() throws Exception { if (m_origin != null) { int segNum = this.getNumSegs(); for (int i = segNum - 1; i >= 0; i--) this.removeSeg(i); double[] xy = new double[2]; for(double i = 0; i < Math.PI*2; i+=Math.PI*2/60) { xy[0] = m_origin.getX() + m_radius * Math.cos(i); xy[1] = m_origin.getY() + m_radius * Math.sin(i); try { this.addPoint(xy[0], xy[1], MrfPathIterator.MRF_SEG_LINETO); } catch (Exception e) { } } } }} 这个问题,偶有一种算法。。我想这个圆是在一个坐标中吧。。那个圆心坐标和半径应该知道吧。然后吗,当然是根据角度了。n个点,那么分成n分。每个角度就是360/n,随便选一条半径与圆周的交点作为第一个点的。计算就可以喽。我的思路就是这样了。呵呵。至于公式,还有代码。。偶就不想了 呵呵,非常感谢大家了哈。Flowing-air的思想也是极坐标吧? import java.awt.Graphics;import javax.swing.*;public class tttt extends JFrame { private int radius; private int number; private final double PI=3.141592; public JPanel pane= new JPanel(){ public void paint(Graphics g) { double x; double y; g.drawOval(0,0,2*radius,2*radius); for(int i=0;i<number;i++) { x=radius+Math.cos((float)i/number*2*PI)*radius; y=radius-Math.sin((float)i/number*2*PI)*radius; System.out.println("i="+i+" x="+x+" y="+y); g.drawOval((int)x,(int)y,5,5); } }; }; tttt(int r,int n){ radius=r; number=n; getContentPane().add(pane); } public static void main(String[] args) { tttt f= new tttt(100,10); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(300,300); f.show(); }}可以实现画圆及画点 求问一段代码的含义 Java连接数据库时出错.. mysql排序 网络聊天与多线程问题 背景颜色 eclipse 配置tomcat 遇到的问题 通信 有没有什么方法A字符串包包含B字符串 啊 请问java如何实现条件编译 有关java生成jpeg图片的方法大讨论 哪位高手为我解释一下什么是 求助:自定义TreeModel中无法插入节点
public Circle2D(double originX, double originY, double radius)throws Exception{
this.m_origin = new Point2D.Double(originX, originY);
this.m_radius = radius;
formCircle();
}private void formCircle() throws Exception
{
if (m_origin != null) {
int segNum = this.getNumSegs();
for (int i = segNum - 1; i >= 0; i--)
this.removeSeg(i); double[] xy = new double[2];
for(double i = 0; i < Math.PI*2; i+=Math.PI*2/60) {
xy[0] = m_origin.getX() + m_radius * Math.cos(i);
xy[1] = m_origin.getY() + m_radius * Math.sin(i);
try {
this.addPoint(xy[0], xy[1], MrfPathIterator.MRF_SEG_LINETO);
}
catch (Exception e) {
}
}
}
}}
我想这个圆是在一个坐标中吧。。那个圆心坐标和半径应该知道吧。然后吗,当然是根据角度了。n个点,那么分成n分。每个角度就是360/n,随便选一条半径与圆周的交点作为第一个点的。计算就可以喽。
我的思路就是这样了。呵呵。至于公式,还有代码。。偶就不想了
private int radius;
private int number;
private final double PI=3.141592;
public JPanel pane= new JPanel(){
public void paint(Graphics g)
{
double x;
double y;
g.drawOval(0,0,2*radius,2*radius);
for(int i=0;i<number;i++)
{
x=radius+Math.cos((float)i/number*2*PI)*radius;
y=radius-Math.sin((float)i/number*2*PI)*radius;
System.out.println("i="+i+" x="+x+" y="+y);
g.drawOval((int)x,(int)y,5,5);
}
};
};
tttt(int r,int n){
radius=r;
number=n;
getContentPane().add(pane);
}
public static void main(String[] args) {
tttt f= new tttt(100,10);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300,300);
f.show();
}
}可以实现画圆及画点