#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPen>
#include <QtMath>
// 递归生成 Heighway Dragon Curve 分形的点集
void generateDragonCurve(QGraphicsScene &scene, QPointF p1, QPointF p2, int depth)
{
if (depth == 0) {
// 添加线段
QPen pen;
pen.setColor(Qt::GlobalColor::magenta);
scene.addLine(p1.x(), p1.y(), p2.x(), p2.y(), pen);
return;
}
// 计算下一级曲线和旋转后的位置
double length = qSqrt(qPow(p2.x() - p1.x(), 2.0) + qPow(p2.y() - p1.y(), 2.0));
QPointF mid((p1.x() + p2.x()) / 2.0, (p1.y() + p2.y()) / 2.0);
double angle = qAtan2(p2.y() - p1.y(), p2.x() - p1.x());
angle += M_PI / 2.0;
double x = mid.x() + (length / 2.0) * qCos(angle);
double y = mid.y() + (length / 2.0) * qSin(angle);
QPointF newPoint(x, y);
// 递归生成分形
generateDragonCurve(scene, p1, newPoint, depth - 1);
generateDragonCurve(scene, newPoint, p2, depth - 1);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
QPointF p1(100, 100);
QPointF p2(500, 100);
generateDragonCurve(scene, p1, p2, 12); // 生成 Heighway Dragon Curve 分形
view.show();
return app.exec();
}
一个qt/c++ demo,用于显示 Heighway Dragon 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瀑布图的控件效果
浏览: 1097
-
一个qt/c++ demo,用于显示分星图
浏览: 1015