连接极坐标图坐标

时间:2016-03-21 12:14:17

标签: java polar-coordinates

我的程序是Polar图形窗口。我的问题是,当我绘制r=a*sin(b*theta)时。我在下面显示的具体示例使用a=12b=8。当我将绘制的点连接到下一个时,我会得到以下内容:

Polar Graph

线条似乎画在花瓣上,看起来很棒,但不正确。下面是绘制点和线的代码:

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);
}

为什么会这样?怎么修好?提前谢谢!

1 个答案:

答案 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进行微调。