public Point getPointOnSegment(double length, int x1, int y1, int x2, int y2) {
if(length==0) return new Point(x2, y2);
double angle = Math.atan((double)(y2-y1)/(double)(x2-x1));
return new Point((int)((length*Math.cos(angle))+x1), (int)((length*Math.sin(angle))+y1));
}
Я нашел эту функцию, которая должна возвращать точку на линии, которая равна x расстоянию вдоль этой линии. Но по какой-то причине он иногда возвращает точку в направлении, противоположном предполагаемому. Похоже, это происходит, если угол линии больше 180 градусов.
Я смотрю на это уже более 5 часов, и я боюсь, что я не замечал этого вопроса. Кто-нибудь может увидеть, в чем проблема, или предложить лучшую функцию для ее замены?