------------------------------------------------------------------------
| 63 | |
| 64 | //------------------------------------------------------------------------ |
| 65 | unsigned arc::vertex(double* x, double* y) |
| 66 | { |
| 67 | if(is_stop(m_path_cmd)) return path_cmd_stop; |
| 68 | if((m_angle < m_end - m_da/4) != m_ccw) |
| 69 | { |
| 70 | *x = m_x + cos(m_end) * m_rx; |
| 71 | *y = m_y + sin(m_end) * m_ry; |
| 72 | m_path_cmd = path_cmd_stop; |
| 73 | return path_cmd_line_to; |
| 74 | } |
| 75 | |
| 76 | *x = m_x + cos(m_angle) * m_rx; |
| 77 | *y = m_y + sin(m_angle) * m_ry; |
| 78 | |
| 79 | m_angle += m_da; |
| 80 | |
| 81 | unsigned pf = m_path_cmd; |
| 82 | m_path_cmd = path_cmd_line_to; |
| 83 | return pf; |
| 84 | } |
| 85 | |
| 86 | //------------------------------------------------------------------------ |
| 87 | void arc::normalize(double a1, double a2, bool ccw) |