直接附代码了:
QPolygonF m_PolygonPoints;
m_PolygonPoints.push_back(QPoint(1,0));
m_PolygonPoints.push_back(QPoint(2,1));
m_PolygonPoints.push_back(QPoint(4,2));
......
int nSize = m_PolygonPoints.size();
qreal x1, x2, y1, y2, x, y;
qreal rad01, rad02, rad;
QMap <int, QMap< int, QPointF>> tmp_map;
QMap<int, QPointF> tmp_point;
for (int i = 4; i < m_PolygonPoints.size()-4; i++)
{
QPointF pos0 = m_PolygonPoints[i];
QPointF pos1 = m_PolygonPoints[i-4];
QPointF pos2 = m_PolygonPoints[i+4];
x1 = pos1.x();
y1 = pos1.y();
x2 = pos2.x();
y2 = pos2.y();
x = pos0.x();
y = pos0.y();
rad = atan2(y2 - y1, x2 - x1);
rad01 = rad + 1.57;
rad02 = rad - 1.57;
for (int j = 1; j <= 15; j++) {
tmp_point[1] = QPointF(x + j * cos(rad01),
y + j * sin(rad01));
tmp_point[2] = QPointF(x + j * cos(rad02),
y + j * sin(rad02));
tmp_map[j] = tmp_point;
}
tmp_point[0] = QPointF(x, y);
tmp_map[0] = tmp_point;
for (auto each : tmp_point.toStdMap()) {
qDebug() << "key: " << each.first;
qDebug() << "value: " << each.second;
};
for (auto each : tmp_map.toStdMap()) {
for (auto eachChild : each.second.toStdMap()) {
qDebug() << "keyChild: " << eachChild.first;
qDebug() << "keyChild: " << eachChild.second;
};
};
//point_list << tmp_map;
}