Qt cpp QPainter 实现绘制 。已知 point A、point B。以点B为顶点绘制等腰三角形SA。SA的腰长为106,底边长为80,SA高的方向为BA所在直线。求出SA 三个顶点的坐标。 并使用QPainter绘制
时间: 2024-02-20 12:58:53 浏览: 80
以下是实现绘制的代码示例:
```cpp
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
// 已知点A和点B的坐标
QPoint A(100, 100);
QPoint B(200, 200);
// 求出BA直线的斜率k
qreal k = (B.y() - A.y()) / (B.x() - A.x());
// 求出SA底边的中点M坐标
QPoint M((A.x() + B.x()) / 2, (A.y() + B.y()) / 2);
// 求出SA高H的长度
qreal H = sqrt(pow(106, 2) - pow(80 / 2, 2));
// 求出SA顶点C的坐标
QPoint C(M.x() + H / sqrt(1 + pow(k, 2)), M.y() + k * (C.x() - M.x()));
// 求出SA另外一个顶点D的坐标
QPoint D(2 * M.x() - C.x(), 2 * M.y() - C.y());
// 使用QPainter绘制三角形
QPainter painter(this);
painter.setPen(QPen(Qt::black, 2));
painter.drawLine(A, B);
painter.drawLine(B, C);
painter.drawLine(C, D);
}
```
运行程序后,会绘制出以点B为顶点的等腰三角形SA,三个顶点的坐标分别为A、C、D。
阅读全文