在CS类的项目中,我应该使用一个双精度值来缩放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());
}
}
最佳答案
这行不通:
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
}