如何用Java2D复现这张图片?
我正在用Java2D尝试复现这张图,几乎已经完成,但有一个微小的差异。
在原图中,中心有四个圆相互重叠,但在我的输出中,中心没有重叠。
我到底哪里搞错了??
下面是它应该的样子:

而这就是我看到的样子

我只附上了我的代码中paintComponent部分,请告诉我是否应该把整份代码贴上来
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.translate(200,200);
int scale = 60, max=8, nPoints = 60, minSize = 4;
for (int i = 0; i <nPoints; i++){
double t = (i/(double)nPoints*Math.PI*2);
double x = (int)(Math.cos(t) * scale);
double y = (int)(Math.sin(t*2) * scale);
double s = minSize + max * (1 - Math.abs(y/scale));
int size = (int)(s);
g2.draw(new RoundRectangle2D.Double(x-size/2, y-size/2,size,size,12,12));
}
}
解决方案
你现在只是画了一个圆,因为x 和y 使用了相同的频率。
尝试把其中一个改成不同的,例如:
double t = i * 2 * Math.PI / nPoints;
double x = Math.cos(t) * scale;
double y = Math.sin(2 * t) * scale;
这应该会让中心产生重叠。同时避免过早将其强制转换为 int,这可能会稍微改变形状。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。