我有一个表示二维空间线条的类:
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。
请注意,我也想考虑角度。
答案 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