PointF 90 градусов от X - PullRequest
       8

PointF 90 градусов от X

0 голосов
/ 28 ноября 2018

Вчера я задал вопрос - Нарисовать стрелку в соответствии с путем

В этом вопросе я объяснил, что хочу нарисовать стрелку в направлении моего onTouchEvent.Я получил ответ в комментариях о том, что мне нужно повернуть холст.

Прошлой ночью у меня появилась новая идея, и вот тут возникает вопрос.


Я получаю x Положение / координата в MotionEvent.ACTION_DOWN путем вызова event.getX(); внутри моего onTouchEvent.

Я хотел бы знать, возможно ли получить точку / координату 90 градусов от x?

Вот демонстрация для ясности хода:

                                      |
                                      |
                                      |
                                      |
                                      |
                                      |
point I want to get --> x1------------x

Как показано выше, x1 - это то, что я хочу получить.


Также стоит упомянуть следующеене будет работать, потому что ось x может быть под углом:

x1 = x - value

РЕДАКТИРОВАТЬ:

Я думаю, я сделал вопрос неясным, извинитеоб этом.

Я собираюсь создать сценарий, чтобы объяснить себя лучше

В моем onTouchEvent внутри MotionEvent.ACTION_DOWN Я установил начальные x и y, давайте вызовемэто xdown и ydown, вызывая event.getX() и event.getY().

Затем внутри MotionEvent.ACTION_UP я получаю x и y, как и выше, давайте назовем его xup и yup.

Затем я получаю центральную точку, назовем ее centerx и centery.

Теперь она будет выглядеть так:

               xdown, ydown
              |
              |
              |
              |
              |
              |
              |centerx, centery
              |
              |
              |
              |
              |
              |
               xup, yup

СейчасЯ хочу получить x и y 90 градусов от centerx, centery, скажем, на расстоянии 40.

Другой демон-район:

                              xdown, ydown
                             |
                             |
                             |
                             |
                             |
                             |
  nintyX,nintyY <------------|centerx, centery
                             |
                             |
                             |
                             |
                             |
                             |
                              xup, yup

1 Ответ

0 голосов
/ 28 ноября 2018

Кажется, у вас есть какое-то направление и вы хотите получить перпендикулярное направление.

Компоненты векторов направления (dx, dy)

dx = centerx - xup
dy = centery - yup

, тогда компоненты слева (примечание - «левость» зависит отсистема координат координат!) перпендикулярный вектор:

 px =  - dy
 py =   dx 

(px=dy и py=-dx, если направление неверно для вас)

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

lenp = sqrt(px*px + py*py)  
upx = px / lenp
upy = py / lenp
nintyX = centerx + upx * D 
nintyY = centery + upy * D 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...