QPainterpath在运算符subtrace中返回null

时间:2019-01-13 09:40:08

标签: qt

我在qpainterpaht计算中遇到问题。

这是两个QPainterPath:

两个路径:subjectpath,clippath。 数学上有一个重叠的地方,但计算机数据却没有重叠

[路径数据和示意图] [1]

对qpainterpath doc的Accordint,(subjectpath-clippath)的结果应该是subjectpath。但是我的代码中的结果为空。

有人会给我一些建议吗?

谢谢!

代码如下:

double dy_x = -0.8609277780573142;
double dy_y = -179.18974019701932;
double dx_x = -100.56567051873533;
double dx_y = 0.48317375299134985;

double p1_x = 174.49572649572647;
double p1_y = 239.04273504273505;
double p2_x = 297.57264957264954;
double p2_y = 238.4957264957265;
QPainterPath p1;
p1.moveTo(p1_x, p1_y);
p1.lineTo(p1_x - dy_x + dx_x, p1_y - dy_y + dx_y);
p1.lineTo(p2_x - dy_x - dx_x, p2_y - dy_y - dx_y);
p1.lineTo(p2_x, p2_y);
p1.lineTo(p1_x, p1_y);
QPainterPath p2;
p2.moveTo(p1_x, p1_y);
p2.lineTo(p1_x + dy_x + dx_x, p1_y + dy_y + dx_y);
p2.lineTo(p2_x + dy_x - dx_x, p2_y + dy_y - dx_y);
p2.lineTo(p2_x, p2_y);
p2.lineTo(p1_x, p1_y);


double r1_x = 201.2991452991453;
double r1_y = 199.11111111111106;
double r2_x = 225.36752136752136;
double r2_y = 259.8290598290598;
double r3_x = 248.3418803418803;
double r3_y = 198.01709401709397;
QPainterPath p3;
p3.moveTo(r1_x, r1_y);
p3.lineTo(r2_x, r2_y);
p3.lineTo(r3_x, r3_y);
p3.lineTo(r1_x, r1_y);

QPainterPath result = (p3 & p1) - p2;
if (result.isEmpty()) {
    qDebug()<<"Result is empty";
}
else {
    qDebug()<<"Result is not empty";
}

the code diagram, the result should be the orange part!

如果r2_y = 252.8290598290598,则结果应该正确。

0 个答案:

没有答案