Нарисуйте параллельную линию с определенным расстоянием до уже перекошенной линии в canvas Android

#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 Расстояние должно быть постоянным. Добавлено больше формул, чтобы избежать путаницы