缩放线段 - Java

时间:2013-09-24 00:56:50

标签: java scalar

在我的CS类的项目中,我应该使用double值来缩放LineSegment并返回一个新的LineSegment,其起点是旧LineSegment的相同起点,但是有一个新的终点来自缩放。我不确定如何做到这一点。我试图用标量乘以线段,但这不起作用,并给了我一个不兼容的输入错误。这是我的代码。

public class LineSegment {
private final Point start;
private final Point end;
public LineSegment(Point start, Point end) {
    this.start = start;
    this.end = end;
}
public double slope() {
    return ((end.getY()-start.getY())/(end.getX()-start.getX()));
}
public double yIntercept() {
    return (start.getY()-(this.slope()*start.getX()));
}
public Point getStart() {
    return this.start;
}
public Point getEnd() {
    return this.end;
}
public double length() {
    return (Math.sqrt(Math.pow((end.getX()-start.getX()),2) + Math.pow((end.getY()-start.getY()),2)));
}

public LineSegment scaleByFactor(double scalar) {
    return null;
}
@Override
public String toString() {
    return ("y = " + this.slope() + "x +" + this.yIntercept());
}
}

1 个答案:

答案 0 :(得分:1)

这不起作用:

public LineSegment scaleByFactor(double scalar) {
    return (this.length*scalar);
}

请注意,this.length字段不存在。

但即使你调用了长度方法length(),你仍然会遇到严重的问题,因为你的方法声明它会返回一个 LineSegment对象而你会是返回一个号码。我建议您使用计算来创建一个新的LineSegment对象(提示 - 使用new和使用您的计算的参数调用构造函数)然后返回它。

伪代码中的

public LineSegment scaleByFactor(double scalar) {
    // use scalar, start and end to calculate a new end parameter value
    // create new LineSegement object with the old start and new end parameters
    // return this newly created object
}