#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPen>
// 计算点(x, y)围绕中心点(centerX, centerY),旋转角度为angle,距离为radius处的新坐标
void calculatePoint(double centerX, double centerY, double radius, double angle, double &x, double &y)
{
x = centerX + radius * qCos(angle);
y = centerY + radius * qSin(angle);
}
// 递归生成 Spiral Fractal 分型图
void generateSpiralFractal(QGraphicsScene &scene, double centerX, double centerY, double radius, double angle, double dAngle, int depth)
{
if (depth == 0) { // 达到深度限制,停止递归
return;
}
QPen pen;
pen.setColor(Qt::GlobalColor::darkGreen); // 设置颜色
double x1, y1, x2, y2;
calculatePoint(centerX, centerY, radius, angle, x1, y1); // 计算起始点坐标
calculatePoint(centerX, centerY, radius * 2, angle + dAngle, x2, y2); // 计算终止点坐标
scene.addLine(x1, y1, x2, y2, pen); // 绘制线段
double newRadius = radius / 2.0; // 新半径为原来的一半
double newAngle = angle + dAngle; // 新角度为原来的加上偏移角度
// 继续递归生成子级 Spiral Fractal 分型图
generateSpiralFractal(scene, centerX, centerY, newRadius, newAngle, dAngle, depth - 1);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
double centerX = 200; // 中心点横坐标
double centerY = 200; // 中心点纵坐标
double radius = 180; // 初始半径
double angle = 0.0; // 初始角度
double dAngle = 0.15; // 每一级的偏移角度
int depth = 12; // 深度
generateSpiralFractal(scene, centerX, centerY, radius, angle, dAngle, depth);
view.show();
return app.exec();
}
一个qt/c++ demo,用于显示 Spiral Fractal(螺旋分形) 分形图
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