52 const int half_width = aOval.
GetWidth() / 2;
58 std::vector<TYPED_POINT2I> pts;
79 pts.emplace_back(
VECTOR2I{ 0, half_len }, pt_type );
80 pts.emplace_back(
VECTOR2I{ 0, -half_len }, pt_type );
84 const int d_centre_to_cap_centre = half_len - half_width;
95 const auto add_end = [&](
const VECTOR2I& aPt )
101 add_end( { half_width, d_centre_to_cap_centre } );
102 add_end( { half_width, -d_centre_to_cap_centre } );
103 add_end( { -half_width, d_centre_to_cap_centre } );
104 add_end( { -half_width, -d_centre_to_cap_centre } );
120 const VECTOR2I cap_radial = { 0, half_width };
124 EDA_ANGLE radial_line_rotation = rotation;
128 VECTOR2I cap_radial_to_x_axis = cap_radial;
129 RotatePoint( cap_radial_to_x_axis, radial_line_rotation );
136 VECTOR2I cap_radial_to_y_axis = cap_radial;
137 RotatePoint( cap_radial_to_y_axis, radial_line_rotation );
139 const auto add_quadrant = [&](
const VECTOR2I& aPt )
145 add_quadrant(
VECTOR2I{ 0, d_centre_to_cap_centre } + cap_radial_to_y_axis );
146 add_quadrant(
VECTOR2I{ 0, d_centre_to_cap_centre } + cap_radial_to_x_axis );
148 add_quadrant(
VECTOR2I{ 0, -d_centre_to_cap_centre } - cap_radial_to_y_axis );
149 add_quadrant(
VECTOR2I{ 0, -d_centre_to_cap_centre } - cap_radial_to_x_axis );
std::vector< TYPED_POINT2I > GetOvalKeyPoints(const SHAPE_SEGMENT &aOval, OVAL_KEY_POINT_FLAGS aFlags)
Get a list of interesting points on an oval (rectangle with semicircular end caps)
VECTOR2I GetRotated(const VECTOR2I &aVector, const EDA_ANGLE &aAngle)
Return a new VECTOR2I that is the result of rotating aVector by aAngle.
void RotatePoint(int *pX, int *pY, const EDA_ANGLE &aAngle)
Calculate the new point of coord coord pX, pY, for a rotation center 0, 0.