Qt cpp 已知S1 S2 ,如何获取线段S1S2 之间距离S1 S2点位距离为40的两个点S3和S4
时间: 2024-02-21 12:57:09 浏览: 34
可以使用QLineF和QPointF类来实现。
假设已知点S1和点S2的坐标为(QPointF类型的变量)s1和s2。
则可以通过以下代码来获取线段S1S2 之间距离S1 S2点位距离为40的两个点S3和S4:
```cpp
QLineF line(s1, s2); // 构造线段S1S2
QPointF u = line.unitVector().p2() - line.unitVector().p1(); // 计算单位向量u
u *= 40; // 将向量长度设为40
QPointF s3 = s1 + u; // 计算点S3
QPointF s4 = s2 - u; // 计算点S4
```
其中,QLineF的unitVector()方法可以返回线段的单位向量,p1()和p2()方法可以分别返回线段的起点和终点。
最后,s3和s4分别是点S3和点S4的坐标。
相关问题
Qt 计算两个点之间的距离
你可以使用 `QPointF` 类型来表示每个点,然后使用 `QLineF` 类型来计算它们之间的距离。以下是一个示例代码:
```cpp
#include <QPointF>
#include <QLineF>
#include <cmath>
double distanceBetweenPoints(QPointF p1, QPointF p2)
{
QLineF line(p1, p2);
return line.length();
}
```
在这个函数中,我们使用 `QLineF` 类型来创建连接两个点的线。然后,我们可以使用 `length()` 函数来获取这条线的长度,即两个点之间的距离。最后,我们返回这个距离值。
注意,为了使用 `QLineF` 类型,你需要包含 `<QPointF>` 和 `<QLineF>` 头文件,并且需要链接 Qt 的核心模块。
使用Qt 根据两个点的x, y坐标计算两个点之间的相对距离
你可以使用以下公式来计算两个点之间的距离:
```
distance = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
```
其中,`(x1, y1)` 和 `(x2, y2)` 分别是两个点的坐标,`sqrt` 函数是计算平方根的函数。
以下是一个示例代码:
```cpp
#include <cmath>
double distanceBetweenPoints(double x1, double y1, double x2, double y2)
{
double dx = x2 - x1;
double dy = y2 - y1;
double distance = std::sqrt(dx * dx + dy * dy);
return distance;
}
```
在这个函数中,我们首先计算两个点的 x 和 y 坐标之差,然后使用上述公式计算它们之间的距离,并返回结果。请注意,我们使用 `std::sqrt` 函数来计算平方根,因此需要包含 `<cmath>` 头文件。
使用这个函数的示例代码如下:
```cpp
double x1 = 0.0;
double y1 = 0.0;
double x2 = 3.0;
double y2 = 4.0;
double distance = distanceBetweenPoints(x1, y1, x2, y2);
// distance 现在是 5.0
```
在这个示例中,我们计算了两个点 `(0, 0)` 和 `(3, 4)` 之间的距离,结果是 `5.0`。