Как определить тап по линии, нарисованному в Canvas Android? Рисую линию таким способом:ePaint = new Paint();
ePaint.setTextSize(50);
canvas.drawLine(edge.v1.x, edge.v1.y, edge.v2.x, edge.v2.y, ePaint);
Edgepublic class Edge {
Vertex v1;
Vertex v2;
}
Vertexpublic class Vertex {
float x;
float y;
}
Так пытаюсь определить:public static final int E = 20;
public boolean isPointOnLine(Edge edge, float px, float py) {
if(px > edge.v1.x-E && px edge.v1.y-E && py edge.v1.x-E && px edge.v1.y-E && py

21 Авг 2019 в 06:03
230 +2
0
Ответы
1

Вы можете воспользоваться математической формулой для определения расстояния от точки до линии. В вашем случае, это будет расстояние от точки (px, py) до прямой, заданной двумя точками (v1.x, v1.y) и (v2.x, v2.y).

Примерный код для определения, находится ли точка на линии, может выглядеть следующим образом:

public boolean isPointOnLine(Edge edge, float px, float py) {
float distance = Math.abs((edge.v2.y - edge.v1.y) * px - (edge.v2.x - edge.v1.x) * py + edge.v2.x * edge.v1.y - edge.v2.y * edge.v1.x) /
Math.sqrt(Math.pow(edge.v2.y - edge.v1.y, 2) + Math.pow(edge.v2.x - edge.v1.x, 2));
return distance < 25; // 25 - половина толщины линии
}

Этот код будет считать расстояние от точки до линии и возвращать true, если данное расстояние меньше половины толщины линии (в вашем случае, 25). Таким образом, можно определить, находится ли точка на линии или нет.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир