#java #android #math
#java #Android #математика
Вопрос:
У меня есть линия (,) на canvas, даже если она может быть перекошена, все, что я хочу сделать, это нарисовать новую параллельную линию относительно старой линии (,) с равной длиной линии. Попробовал это >>>>
double d = getLength(x1, y1, x2, y2);
double m = getSlope(x1, y1, x2, y2);
double r = Math.sqrt(1 Math.pow(m, 2));
double endX = x d / r;
double endY = y ((d * m) / r);
return new double[]{x, y, endX, endY};
Ответ №1:
Чтобы создать параллельный сегмент, вам нужно построить перпендикулярный вектор необходимой длины. Обратите внимание, что есть два решения для обеих сторон сегмента
dx = x2 - x1
dy = y2 - y1
len = sqrt(dx*dx dy*dy)
perpx = -dy * distance / len
perpy = dx * distance / len
// "left" line start
x1' = x1 perpx
y1' = y1 perpy
// "left" line end
x2' = x2 perpx
y2' = y2 perpy
// "right" line
x1'' = x1 - perpx
y1'' = y1 - perpy
x2'' = x2 - perpx
y2'' = y2 - perpy
Комментарии:
1. работает нормально, но расстояние между двумя линиями (параллельными) не является постоянным, есть идеи?
2. @Ashutosh Gupta Расстояние должно быть постоянным. Добавлено больше формул, чтобы избежать путаницы