1. 阿基米德螺线
阿基米德螺线的极坐标方程为:
r=a+bθ
其中:
- r 是螺旋线上点到原点的距离(径向距离),
- θ 是点的角度,
- a 是起始半径(当 θ=0 时的半径),
- b 是螺旋线的扩展系数或密度系数。
2. 代码
#include <QtWidgets>
class ArchimedeanSpiralWidget : public QWidget
{
public:
ArchimedeanSpiralWidget(QWidget *parent = nullptr) : QWidget(parent) {}
protected:
void paintEvent(QPaintEvent *event) override
{
Q_UNUSED(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
int centerX = width() / 2;
int centerY = height() / 2;
int numPoints = 10000;
qreal a = 1; // 起始半径
qreal b = 2; // 扩展系数
painter.translate(centerX, centerY); // 将坐标系原点移到窗口中心
// 绘制阿基米德螺线
painter.setPen(Qt::blue);
qreal theta = 0;
qreal step = 20 * M_PI / numPoints; // 0到4π之间均匀分布的角度
QVector<QPointF> points;
for (int i = 0; i < numPoints; ++i) {
qreal r = a + b * theta;
qreal x = r * qCos(theta);
qreal y = r * qSin(theta);
points.append(QPointF(x, y));
theta += step;
}
painter.drawPolyline(points);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ArchimedeanSpiralWidget widget;
widget.resize(400, 400);
widget.show();
return app.exec();
}
3. 结果