Skip to main content
标签ad报错:该广告ID(9)不存在。
  主页 > Qt入门

一个qt/c++ demo,用于显示 T-Square(T型正方形) 分形图

2023-04-24 浏览:
标签ad报错:该广告ID(7)不存在。

#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPen>

// 递归生成 T-Square 分形的点集
void generateTSquare(QGraphicsScene &scene, const QPointF &center, double size, int depth)
{
    if (depth == 0) {
        // 添加正方形
        QPen pen;
        pen.setColor(Qt::GlobalColor::magenta);
        scene.addRect(center.x() - size / 2.0, center.y() - size / 2.0, size, size, pen);
        return;
    }

    // 计算下一个正方形的位置和大小
    double newSize = size / 2.0;
    double x1 = center.x() - newSize / 2.0;
    double y1 = center.y() - newSize / 2.0;
    QPointF point1(x1, y1);
    generateTSquare(scene, point1, newSize, depth - 1);
    double x2 = center.x() + newSize / 2.0;
    double y2 = center.y() - newSize / 2.0;
    QPointF point2(x2, y2);
    generateTSquare(scene, point2, newSize, depth - 1);
    double x3 = center.x() - newSize / 2.0;
    double y3 = center.y() + newSize / 2.0;
    QPointF point3(x3, y3);
    generateTSquare(scene, point3, newSize, depth - 1);
    double x4 = center.x() + newSize / 2.0;
    double y4 = center.y() + newSize / 2.0;
    QPointF point4(x4, y4);
    generateTSquare(scene, point4, newSize, depth - 1);
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QGraphicsScene scene;
    QGraphicsView view(&scene);

    QPointF center(200, 200);
    double size = 200.0;
    generateTSquare(scene, center, size, 5); // 生成 T-Square 分形

    view.show();

    return app.exec();
}