32 m_dbgSrcPolygon = srcPolygon;
33 m_dbgDstPolygon = dstPolygon;
36 m_a = dstPolygon[1] - dstPolygon[0];
37 m_b = dstPolygon[2] - dstPolygon[1];
38 m_c = dstPolygon[3] - dstPolygon[0];
45 m_xCoeff = srcPolygon[1].x() - srcPolygon[0].x();
46 m_yCoeff = srcPolygon[3].y() - srcPolygon[0].y();
100 static const qreal
eps = 1e-6;
110 bool dontCheckOtherNu =
false;
114 dontCheckOtherNu =
true;
118 sqrtD = std::sqrt(
D);
122 dontCheckOtherNu =
true;
129 qreal xMu1 =
xBasedMu(nu1, xDenomNu1);
138 qreal yMu1 =
yBasedMu(nu1, yDenomNu1);
145 qreal nu2 = nu1, xDenomNu2 = xDenomNu1, xMu2 = xMu1, yDenomNu2 = yDenomNu1, yMu2 = yMu1;
147 if (!dontCheckOtherNu) {
169 qreal denoms[count] = {xDenomNu1, yDenomNu1, xDenomNu2, yDenomNu2};
170 qreal mus[count] = {xMu1, yMu1, xMu2, yMu2};
171 qreal nus[count] = {nu1, nu1, nu2, nu2};
172 QPointF results[count];
174 qCritical() <<
"For point: x = " << m_dbgOrigX <<
" y = " << m_dbgOrigY <<
" | src polygon = " << m_dbgSrcPolygon <<
" | dst polygon = " << m_dbgDstPolygon;
175 for (
int i = 0; i < count; i++) {
176 qCritical() <<
"for i = " << i <<
": denoms[i] = " << denoms[i] <<
"mus[i] = " << mus[i] <<
"nus[i] = " << nus[i] <<
"result: " <<
getResult(nus[i], mus[i]);
181 qreal distanceFromCenter = 0.0;
184 int meaningfulCount = dontCheckOtherNu ? 2 : 4;
185 for (
int i = 0; i < meaningfulCount; i++) {
187 if (qAbs(denoms[i]) <
eps) {
193 if (bestI < 0 || dist < distanceFromCenter) {
194 distanceFromCenter = dist;
200 for (
int i = 0; i < count; i++) {
201 qCritical() <<
"for i = " << i <<
"denom=" << denoms[i] <<
"mu=" << mus[i] <<
"nu=" << nus[i] <<
"result: " <<
getResult(nus[i], mus[i]);
203 qCritical() <<
"Center point: " << center;
204 qCritical() <<
"dont check other nu: " << dontCheckOtherNu;
212 return results[bestI];