我试图弄清楚如何确定两条线是否相互平行。我有一个Point类和一个Segment类。
到目前为止,我的斜率方法就是我的Point类。
public double slopeTo (Point anotherPoint)
{
double totalSlope;
double slope1;
double slope2;
slope1 = (anotherPoint.y - this.y);
slope2 = (anotherPoint.x - this.x);
if(slope2 == 0)
{
slope2 = Double.POSITIVE_INFINITY;
return slope2;
}
else if (slope1 == 0)
{
slope1 = 0;
return slope1;
}
else
{
totalSlope = (slope1 / slope2);
return totalSlope;
}
}
我的并行方法是在我的Segment类中。
public boolean isParallelTo (Segment s1)
{
double pointSlope;
pointSlope = (point1.slopeTo (point2));
if (s1 .equals(pointSlope))
return true;
else
return false;
}
我的教授为我们和测试人员提供了一个测试人员,他创建了四个新点,其中两个用于一个段,另外两个用于第二个段。
s1 = new Segment(3,6,4,1); //<---(x1,y1,x2,y2)
s2 = new Segment(4,7,5,2);
originals1ToString = s1.toString();
originals2ToString = s2.toString();
System.out.println("\nTest6.1: Testing isParallelTo with " + s1 + " and " + s2);
System.out.print("expected: true \ngot: ");
boolean boolAns = s1.isParallelTo(s2);
System.out.println(boolAns);
当我运行测试仪时,我得到了一个错误,但它应该是真的。所以我的并行方法是错误的。我知道它不能是我的斜率方法因为我已经反复测试了一切都是正确的。
请帮帮我。我将不胜感激。
答案 0 :(得分:3)
if (s1 .equals(pointSlope))
return true;
else
return false;
您正在将Segment与double进行比较,从不返回true?
另一点是,斜率应该是段,而不是组合的2段。您可以比较segment1和segment2的斜率,如果它们相等,那么您可以说段是相等的。您需要更改slope和parallelTo方法。
答案 1 :(得分:2)
isParallelTo
应该是这样的:
public boolean isParallelTo (Segment other) {
double otherSlope = other.point1.slopeTo(other.point2);
double thisSlope = point1.slopeTo(point2);
return otherSlope == thisSlope;
}
我在此假设point1
和point2
不是private
。