Geometry 适用于更大线路的新型跳线

Geometry 适用于更大线路的新型跳线,geometry,Geometry,我有一个类表示二维空间上的线: class Line { Point start; Point end; Float length; // calculated property, something like sqrt(pow(end.x - start.x, 2) + pow(end.y - start.y, 2)) } 我想要一种方法,使线从中心变大 例如,如果我创建一些与X平行的图形: Point start = Point(1, 3) Point end = Po

我有一个类表示二维空间上的线:

class Line {
   Point start;
   Point end;

   Float length; // calculated property, something like sqrt(pow(end.x - start.x, 2) + pow(end.y - start.y, 2))
}
我想要一种方法,使线从中心变大

例如,如果我创建一些与X平行的图形:

Point start = Point(1, 3)
Point end = Point(1, 10)
Line newLine = Line(start, end) // newLine.length here is 7
然后调用方法makebiger:

我希望接收新行或修改旧行的start/end属性,使其start=1,1/end=1,12,使其长度变为11

请注意,我也想考虑角度。

据我所知,MaigBigGeRe4比你想把长度增加4。所以使用简单的比例

 newlength = length + increasevalue

 dx = (end.x - start.x) / 2
 mx = (end.x + start.x) / 2  
 newstart.x = mx - dx * newlength / length 
 newend.x = mx + dx * newlength / length 
 and similar for y
 newlength = length + increasevalue

 dx = (end.x - start.x) / 2
 mx = (end.x + start.x) / 2  
 newstart.x = mx - dx * newlength / length 
 newend.x = mx + dx * newlength / length 
 and similar for y