线段两个点 如何一当前点为中心 向两边扩大
时间: 2024-02-24 12:59:31 浏览: 29
假设线段的两个端点为P1(x1, y1)和P2(x2, y2),需要将当前点P0(x0, y0)为中心,将线段向两边扩大c个单位长度。可以按照以下步骤进行:
1. 计算线段的长度L,可以用以下公式计算:
```
double L = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
```
2. 计算线段的方向向量,可以用以下公式计算:
```
double dx = (x2-x1)/L;
double dy = (y2-y1)/L;
```
3. 计算从当前点P0到线段的垂线段的长度d,可以用以下公式计算:
```
double d = ((y1-y0)*dx - (x1-x0)*dy);
```
4. 计算垂直于线段方向向量的向量,可以将x和y互换并将y取反,得到:
```
double vx = -dy;
double vy = dx;
```
5. 将垂直向量缩放为c个单位长度,并分别加到线段的两个端点上,得到新的线段的起点和终点坐标:
```
double x1_new = x1 + c * vx;
double y1_new = y1 + c * vy;
double x2_new = x2 + c * vx;
double y2_new = y2 + c * vy;
```
6. 将线段的起点和终点坐标沿着线段方向向量移动d个单位长度,得到垂线段与线段的交点坐标P(xp, yp):
```
double xp = x0 - d * dx;
double yp = y0 - d * dy;
```
7. 将垂线段的起点和终点坐标沿着垂直向量移动c个单位长度,得到垂线段的两个端点坐标:
```
double x3 = xp + c * vx;
double y3 = yp + c * vy;
double x4 = xp - c * vx;
double y4 = yp - c * vy;
```
8. 将新的线段的起点和终点分别设置为(x3, y3)和(x4, y4)。
最终得到的新线段的起点和终点坐标分别是(x3, y3)和(x4, y4)。