较大线

时间:2017-06-30 12:45:32

标签: 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 = Point(1, 10)
Line newLine = Line(start, end) // newLine.length here is 7

然后调用方法 makeBigger

newLine.makeBigger(4); // pass number of points here

我希望通过 start =(1,1)/ end =(1,12)接收新行(或修改旧的开始/结束属性),因此其长度变为11。

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

1 个答案:

答案 0 :(得分:1)

据我了解,makeBigger(4)表示你希望将长度增加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