我的程序是Polar图形窗口。我的问题是,当我绘制r=a*sin(b*theta)
时。我在下面显示的具体示例使用a=12
和b=8
。当我将绘制的点连接到下一个时,我会得到以下内容:
线条似乎画在花瓣上,看起来很棒,但不正确。下面是绘制点和线的代码:
for(int i=0; i< ptr.size(); i++){
drawPoint(g2d, ptr.get(i), ptt.get(i));
if(connectPoints && i!=ptr.size()-1){
g.drawLine((int)(origin_x+Math.cos(ptt.get(i))*ptr.get(i)*ppp),
(int)(origin_y-Math.sin(ptt.get(i))*ptr.get(i)*ppp),
(int)(origin_x+Math.cos(ptt.get(i+1))*ptr.get(i+1)*ppp),
(int)(origin_y-Math.sin(ptt.get(i+1))*ptr.get(i+1)*ppp));
}
}
ptr
包含r值,ptt
包含theta值。以下是添加点的行:
for(double i=0; i<100; i+=0.1){
pg.plot(12*Math.cos(8*i), i);
}
为什么会这样?怎么修好?提前谢谢!
答案 0 :(得分:1)
您不止一次遍历圆圈,并且每次传球的采样点都不相同。这就是为什么你要在花瓣上切割线条。试试:
double numberOfSteps = 1000;
double stepSize = 2.0 * Math.PI / numberOfSteps;
for(double i=0; i<numberOfSteps; i++){
double theta = i * stepsize;
pg.plot(12*Math.cos(8.0 * theta), theta);
}
尝试使用numberOfSteps
进行微调。