gpt4 book ai didi

qt - QPainterPath::arcTo 上的角度是如何解释的?

转载 作者:行者123 更新时间:2023-12-04 17:56:38 25 4
gpt4 key购买 nike

我正在处理一个图形编辑器的功能,我正在编辑圆弧,当形状是椭圆时,QPainterPath::arcTo 的行为并不像我预期的那样;当它是一个圆圈时,它按预期工作。

下面的两张图片显示了结果。在第一种情况下,我创建了一个圆,然后将其转换为初始起始角为 45 度、跨度角为 270 度的圆弧。场景坐标空间为正方形。对角线呈 45 度角。正如预期的那样,圆弧的端点正好在对角线上。

在第二种情况下,我有一个椭圆,它以完全相同的方式分别转换为 45 度角和 270 度角的圆弧。圆弧的终点不再落在对角线上,这不是我所期望的。

在这两种情况下,绘制代码都是:

painter.arcTo (rect, 45, 270);

零度位于 3 点钟位置,我曾认为指定的角度是在该角度与从中心点到圆弧边缘点的直线之间测量的。显然,还有其他事情正在发生,我不明白并且似乎没有记录在 QPainter::arcTo 描述中。

这是一个问题,因为我正在编写代码来 reshape 弧形,并且当我只有当前鼠标位置和包围矩形的中心点时,我需要能够处理背景。现在,当我 reshape 弧形时,我计算的角度仅准确为 0、90、180 和 270。我越接近中间的 45 度角,我的角度就越远。

我通过以下方式获得该角度:

QLineF (rect.center(), mouse_pos).angle ();

同样,对于圆圈,这非常有效。对于非圆形椭圆,它不会。

写完之后,我找到了这个beautiful illustration ,这恰恰说明了我正在处理的事情。不幸的是,Postscript 解决方案对我没有帮助。我需要知道如何计算正确的角度。

Circular arc with start angle of 45 and span angle of 270

Elliptical arc with start angle of 45 and span angle of 270

最佳答案

我找到了答案 here .如我所料,我对角度的理解是错误的。要执行我的鼠标跟踪以 reshape 弧形,我需要找到一条线段与一个椭圆的交点,然后从参数椭圆方程逆向计算以找到正确的角度。

关于qt - QPainterPath::arcTo 上的角度是如何解释的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40010114/

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