レミスケートを描こうとしています。コードが曲線を正しく描画していません。線が点 0,0 (左隅) で開始または終了するのはなぜですか?
private void drawLemiscate(Graphics g, int a, int Sx,int Sy)
{
int x, y;
Point[] p = new Point[720];
for (int phi = 0; phi < 720; phi++)
{
int r = (int)(a * Math.Cos(2 * degreeToRadians(phi)));
if (r > 0)
continue;
x = (int)Math.Round((r * Math.Sin(degreeToRadians(phi)) + Sx));
y = (int)Math.Round((r * Math.Cos(degreeToRadians(phi)) + Sy));
p[phi] = new Point(x, y);
}
Pen pen = new Pen(Color.Red, 1);
g.DrawLines(pen, p);
canvas.Invalidate();
}
private double degreeToRadians(double angle)
{
return Math.PI * angle / 180.0;
}