Я работаю над проектами вычислительной геометрии, которые содержат классы для Point, Line, Triangle и т. Д. Я храню строки как yint и slope, однако это дает мне проблемы с вертикальными линиями, как показано ниже. Я должен поддерживать использование склонов в целом, однако я мог бы сделать преобразование в градусы, если вы считаете, что это подходит для ситуации.Проблемы с бесконечным двойным наклоном в Java
Ниже приведен метод получения массива всех высот треугольника, реализованных в классе треугольников. Это не работает. Я уверен, что это связано с бесконечными склонами, но не полностью. Есть идеи?
//sides is an array of LineSegs {AB, BC, CA}
public Line[] getLineAltitudes() {
Line[] returner = new Line[3];
for (int i=0; i<3; i++) {
//decides which point is opposite to lineseg
int pointgot = 0;
if (i == 0) pointgot = 2;
else if (i == 1) pointgot = 0;
else pointgot = 1;
//gets the perpendicular to a side
Double newSlope = (double)1/sides[i].getSlope();
System.out.println(newSlope);
if (newSlope.isInfinite()) newSlope = (double) 0;
//constructs a line using the (working) constructor Line(point on line, slope)
returner[i] = new Line(getPoints()[pointgot],newSlope);
}
return returner;
}
Я не совсем уверен, что «не работает» означает в вашем вопросе; но если бы мне пришлось моделировать строки в двумерном евклидовом пространстве, я бы использовал форму 'ax + by + c = 0' и имел класс, в котором хранятся' a', 'b' и' c'. Конечно, две строки считаются равными, если отношения от 'a' до' b' до 'c' одинаковы. –
В этом случае не работает означает, что он возвращает нулевую строку, когда линия является вертикальной или горизонтальной. И нет, к сожалению, я не могу изменить, как работают линейные классы. – nanogru
Кстати, если вы хотите найти наклон линии, перпендикулярной другой, вам нужно разделить «-1» наклон другой линии, а не «1». –