PDA

View Full Version : Error in QPolygonF::subtracted



lni
24th June 2010, 16:13
The following code produces very different result, the only different is the precision (with "f" turn to float), can someone explain please? Many thanks!



#include <QPolygonF>
#include <QDebug>

int main()
{
QPolygonF polygon1;
polygon1 << QPointF(-49.3670886075949369, 1930.1848049281315980 )
<< QPointF(-34.7848101265822862, 1170.4312114989734255 )
<< QPointF(-13.1139240506329173, 2084.1889117043124315 );

QPolygonF polygon2;
polygon2 << QPointF(-41.6708860759493689, 1940.4517453798769111 )
<< QPointF(-52.2025316455696142, 431.2114989733059929 )
<< QPointF(-3.3924050632911431, 1509.2402464065710319 )
<< QPointF(-26.8190801175864770, 1506.3079775881415117 )
<< QPointF(-34.7848101265822862, 1170.4312114989734255 )
<< QPointF(-41.1968964968032125, 1504.5083358315471287 );
qDebug() << "polygon1 - polygon2 = " << polygon1.subtracted( polygon2 );

////////////////////
QPolygonF polygon3;
polygon3 << QPointF(-49.3670886075949369, 1930.1848049281315980 )
<< QPointF(-34.7848101265822862, 1170.4312114989734255 )
<< QPointF(-13.1139240506329173, 2084.1889117043124315 );

QPolygonF polygon4;
polygon4 << QPointF(-41.6708860759493689f, 1940.4517453798769111f )
<< QPointF(-52.2025316455696142f, 431.2114989733059929f )
<< QPointF(-3.3924050632911431f, 1509.2402464065710319f )
<< QPointF(-26.8190801175864770f, 1506.3079775881415117f )
<< QPointF(-34.7848101265822862f, 1170.4312114989734255f )
<< QPointF(-41.1968964968032125f, 1504.5083358315471287f );
qDebug() << "polygon3 - polygon4 = " << polygon3.subtracted( polygon4 );

////////////////////
QPolygonF polygon5;
polygon5 << QPointF(-49.3670886075949369f, 1930.1848049281315980 )
<< QPointF(-34.7848101265822862, 1170.4312114989734255 )
<< QPointF(-13.1139240506329173, 2084.1889117043124315 );

QPolygonF polygon6;
polygon6 << QPointF(-41.6708860759493689, 1940.4517453798769111 )
<< QPointF(-52.2025316455696142, 431.2114989733059929 )
<< QPointF(-3.3924050632911431, 1509.2402464065710319 )
<< QPointF(-26.8190801175864770, 1506.3079775881415117 )
<< QPointF(-34.7848101265822862, 1170.4312114989734255 )
<< QPointF(-41.1968964968032125, 1504.5083358315471287 );
qDebug() << "polygon5 - polygon6 = " << polygon5.subtracted( polygon6 );

}


Output is:


polygon1 - polygon2 = QPolygonF()
polygon3 - polygon4 = QPolygonF(QPointF(-49.3671, 1930.18)QPointF(-43.7755, 1638.85)QPointF(-41.6709, 1940.45)QPointF(-41.1969, 1504.51)QPointF(-37.0334, 1287.59)QPointF(-34.7848, 1170.43)QPointF(-27.884, 1461.4)QPointF(-26.8191, 1506.31)QPointF(-26.8191, 1506.31)QPointF(-13.1139, 2084.19)QPointF(-49.3671, 1930.18))
polygon5 - polygon6 = QPolygonF(QPointF(-43.7755, 1638.85)QPointF(-41.1969, 1504.51)QPointF(-41.6709, 1940.45)QPointF(-43.7755, 1638.85))

lni
25th June 2010, 01:27
Anyone? Suggestions? Thanks!