#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QVector>
#include <QPointF>
// 根据递归深度生成高斯波曲线的点集
QVector<QPointF> generateGosperCurve(const int depth)
{
QVector<QPointF> points;
double x = 0.0, y = 0.0;
double angle = 0.0;
for (int i = 0; i < depth; ++i) {
// 第一步
points.append(QPointF(x, y));
x += qPow(2, -i) * qCos(angle);
y += qPow(2, -i) * qSin(angle);
// 第二步
angle += M_PI / 3.0;
points.append(QPointF(x, y));
x += qPow(2, -i) * qCos(angle);
y += qPow(2, -i) * qSin(angle);
// 第三步
angle -= 2.0 * M_PI / 3.0;
points.append(QPointF(x, y));
x += qPow(2, -i) * qCos(angle);
y += qPow(2, -i) * qSin(angle);
// 第四步
angle += M_PI / 3.0;
points.append(QPointF(x, y));
x += qPow(2, -i) * qSin(angle);
y -= qPow(2, -i) * qCos(angle);
// 第五步
points.append(QPointF(x, y));
x -= qPow(2, -i) * qSin(angle);
y -= qPow(2, -i) * qCos(angle);
// 第六步
angle += M_PI / 3.0;
points.append(QPointF(x, y));
x -= qPow(2, -i) * qCos(angle);
y -= qPow(2, -i) * qSin(angle);
// 第七步
angle -= 2.0 * M_PI / 3.0;
points.append(QPointF(x, y));
x -= qPow(2, -i) * qCos(angle);
y -= qPow(2, -i) * qSin(angle);
// 回到原点
angle += M_PI / 3.0;
points.append(QPointF(x, y));
}
return points;
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
QVector<QPointF> points = generateGosperCurve(6);
// 将点集添加到场景中
for (const auto &point : points) {
scene.addEllipse(point.x() * 100, point.y() * 100, 1.0, 1.0);
}
view.show();
return app.exec();
}
一个qt/c++ demo,用于显示 Gosper Curve(高斯波曲线) 分形图
2023-04-24 浏览:
标签ad报错:该广告ID(7)不存在。
- 热门标签
-
- 最新发布
-
- Qt 信号槽与原编译系统(2024-06-04)
- Qt信号槽关联中使用普通变量关联(包含不修改和修改槽内数据两种)、使用引用变量关联对(2023-05-05)
- 一个qt/c++ demo,用于显示 Koch Snowflake (科赫雪花) 分(2023-04-24)
- 一个qt/c++ demo,用于显示 Peano Curve(皮亚诺曲线) 分形图(2023-04-24)
- 一个qt/c++ demo,用于显示 Apollonian Gasket(阿波罗尼恩(2023-04-24)
- 一个qt/c++ demo,用于显示 Terdragon Curve(三头龙曲线)(2023-04-24)
- 一个qt/c++ demo,用于显示 Spiral Fractal(螺旋分形) 分形(2023-04-24)
- 一个qt/c++ demo,用于显示 Sierpinski Tetrahedron((2023-04-24)
- 一个qt/c++ demo,用于显示 Gasket Fractal(镂垫分形) 分(2023-04-24)
- 一个qt/c++ demo,用于显示 Hexagonal Gosper Curve(2023-04-24)
- 半年热点
-
-
一个Qt/C++ Demo,用于实现一个用于显示3D瀑布图的控件效果
浏览: 1065
-
一个qt/c++ demo,用于显示分星图
浏览: 1004