public IEnumerable <PointF> GetSpiralPoints() { for (float theta = 0; ; theta += deltaAngle) { var r = thickness * theta; float x, y; (x, y) = PointConverter.TransformPolarToCartesian(r, theta); x += center.X; y += center.Y; yield return(new PointF(x, y)); } }
private bool TryFindPointAtSpiralOneSpinAgo(PointF currentSpinPoint, float a, out PointF previousSpinPoint) { var(r, theta) = PointConverter.TransformCartesianToPolar(currentSpinPoint.X - center.X, currentSpinPoint.Y - center.Y); theta -= (float)(2 * Math.PI * a); if (theta < 0) { previousSpinPoint = new PointF(0, 0); return(false); } r = theta * a; var(x, y) = PointConverter.TransformPolarToCartesian(r, theta); previousSpinPoint = new PointF(x + center.X, y + center.Y); return(true); }