gpt4 book ai didi

c++ - 我可以在不使用矩形的情况下在 Qt C++ 中绘制椭圆吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:09 27 4
gpt4 key购买 nike

我在 Qt 中使用 C++,我想画一个椭圆。从 Qt 文档中我发现我可以使用 drawEllipse 从边界矩形绘制椭圆:

void QPainter::drawEllipse(const QRectF &rectangle)

矩形由下式给出:

QRectF(qreal x, qreal y, qreal width, qreal height)

但是,这仅提供了一个具有水平/垂直长轴和短轴的椭圆。

我的椭圆由两个坐标集给出,分别表示长轴和长轴与短轴的长度之比。因此,轴可以具有非水平或垂直的斜率。(无论如何我都需要使用这个方法,因为我还将它导出到一个 dxf 文件,它有这个符号)

我的问题是:

除了使用边界矩形然后旋转它之外,还有其他绘制椭圆的方法吗?

当我从一开始就有轴坐标时,把它放在一个水平/垂直的矩形中然后计算旋转似乎有点傻。

最佳答案

Is there any other way to draw an ellipse than using a boundary rectangle and then rotating it?

没有。没有。当然,在绘制椭圆之前,您必须先旋转坐标系。

不需要计算旋转角度。由于给定了主轴,您可以轻松地将其归一化并导出正交 vector 。这些 vector 形成正交基,它们的分量是 directional cosinestransformation matrix你会攻击画家。

由于主轴方向已经表示为 vector ,因此您无需计算任何超越函数即可为画家得出变换矩阵。只需很少的加法和乘法运算,即使您必须反转矩阵(而您没有)。

关于c++ - 我可以在不使用矩形的情况下在 Qt C++ 中绘制椭圆吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com