16 resultVerticiesPos.resize(_size);
17 for (
size_t i = 0; i < _size; ++i)
19 resultVerticiesPos[i] = _baseVerticiesPos[i];
27 return resultVerticiesPos;
33 int invert = (_side ==
Right || _side ==
Bottom) ? -1 : 1;
34 for (
size_t i = 0; i < _verticies.size(); ++i)
37 FloatPoint& v1 = _verticies[(i + 1) % _verticies.size()];
43 if (invert * v0.
left >= invert * _sideCoord && invert * v1.
left >= invert * _sideCoord)
44 newVerticies.push_back(v0);
46 else if (invert * v0.
left >= invert * _sideCoord && invert * v1.
left < invert * _sideCoord)
48 newVerticies.push_back(v0);
49 float c = (v0.
left - _sideCoord) / (_sideCoord - v1.
left);
50 newVerticies.emplace_back((
float)_sideCoord, (v0.
top + c * v1.
top) / (c + 1));
53 else if (invert * v0.
left <= invert * _sideCoord && invert * v1.
left > invert * _sideCoord)
55 float c = (v0.
left - _sideCoord) / (_sideCoord - v1.
left);
56 newVerticies.emplace_back((
float)_sideCoord, (v0.
top + c * v1.
top) / (c + 1));
63 if (invert * v0.
top >= invert * _sideCoord && invert * v1.
top >= invert * _sideCoord)
64 newVerticies.push_back(v0);
66 else if (invert * v0.
top >= invert * _sideCoord && invert * v1.
top < invert * _sideCoord)
68 newVerticies.push_back(v0);
69 float c = (v0.
top - _sideCoord) / (_sideCoord - v1.
top);
70 newVerticies.emplace_back((v0.
left + c * v1.
left) / (c + 1), (
float)_sideCoord);
73 else if (invert * v0.
top <= invert * _sideCoord && invert * v1.
top > invert * _sideCoord)
75 float c = (v0.
top - _sideCoord) / (_sideCoord - v1.
top);
76 newVerticies.emplace_back((v0.
left + c * v1.
left) / (c + 1), (
float)_sideCoord);
83 _verticies = newVerticies;