Как определить тап по линии, нарисованному в 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
Вы можете воспользоваться математической формулой для определения расстояния от точки до линии. В вашем случае, это будет расстояние от точки (px, py) до прямой, заданной двумя точками (v1.x, v1.y) и (v2.x, v2.y).
Примерный код для определения, находится ли точка на линии, может выглядеть следующим образом:
Этот код будет считать расстояние от точки до линии и возвращать true, если данное расстояние меньше половины толщины линии (в вашем случае, 25). Таким образом, можно определить, находится ли точка на линии или нет.
Вы можете воспользоваться математической формулой для определения расстояния от точки до линии. В вашем случае, это будет расстояние от точки (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). Таким образом, можно определить, находится ли точка на линии или нет.