public Path.FlagsAndCommand vertex(out double x, out double y)
{
x = 0;
y = 0;
if (m_step == m_num)
{
++m_step;
return Path.FlagsAndCommand.CommandEndPoly | Path.FlagsAndCommand.FlagClose | Path.FlagsAndCommand.FlagCCW;
}
if (m_step > m_num) return Path.FlagsAndCommand.CommandStop;
double angle = (double)(m_step) / (double)(m_num) * 2.0 * Math.PI;
if (m_cw) angle = 2.0 * Math.PI - angle;
x = m_Origin.x + Math.Cos(angle) * m_rx;
y = m_Origin.y + Math.Sin(angle) * m_ry;
m_step++;
return ((m_step == 1) ? Path.FlagsAndCommand.CommandMoveTo : Path.FlagsAndCommand.CommandLineTo);
}