Почему Path.op показывает этот нелогичный ответ? - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь написать код для отслеживания движения пальца по экрану. В том, что я хотел, чтобы две линии пересекались. Если две линии очень близки, то я хотел, чтобы они распознали их как соединенные. Для этого я попытался выдавить один конец и проверить, пересекается ли он с другим. Поэтому я написал следующий фрагмент:

 `
    Path exPath = new Path();
    float dx = (float)Math.cos(ang)*lgt;
    float dy = (float)Math.sin(ang)*lgt;
    exPath.moveTo(xpos,ypos);
    exPath.rLineTo(dx,dy);
    exPath.op(mainPath, Path.op.INTERSECT);
    if (!exPath.isEmpty()) {
         //intersected
    }
    `

Но этот код не дал мне ожидаемого результата. Затем, когда я попробовал следующее, это дало мне некоторые нелогичные результаты.

`
    Path exPath = new Path();
    Path temp1 = new Path();
    Path temp2 = new Path();
    float dx = (float)Math.cos(ang)*lgt;
    float dy = (float)Math.sin(ang)*lgt;
    exPath.moveTo(xpos,ypos);
    exPath.rLineTo(dx,dy);
    temp1.op(exPath, exPath, Path.op.INTERSECT);
    temp2.op(exPath, exPath, Path.op.UNION);
    Log.d("TAG, "exPath.isEmpty? "+exPath.isEmpty());
    Log.d("TAG, "temp1.isEmpty? "+temp1.isEmpty());
    Log.d("TAG, "temp2.isEmpty? "+temp2.isEmpty());
`

Вывод для вышеупомянутого был:

D / TAG: exPath.isEmpty? false

D / TAG: temp1.isEmpty? true

D / TAG: temp2.isEmpty? true

Может кто-нибудь помочь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...