2015-06-04 2 views
1

Я создаю приложение для Android, которое имитирует сети Петри. Я представляю место по кругу и переход по квадрату, и я соединяю эти виды по дуге (это просто имя из сетей Петри, для моей цели это просто прямая линия), и вот проблема, с которой я сталкиваюсь, я знаю, как подключите центральную точку этих просмотров, но я не знаю, как соединить границу круга и границы квадрата, посмотрите на изображение, которое должно объяснить все: enter image description hereСвязь границ геометрических фигур

В моем приложении я знаю, могу ли я указывать (круг) или переход (квадрат), я также знаю размерность этих представлений и его координаты, можете ли вы предложить мне любую начальную точку для написания алгоритма, который будет связывать границы этих двух фигур и нарисовать стрелку в конце линия? Заранее спасибо

+0

У вас есть правило, для какой точки на границе форм использовать? – Synergist

+0

Я не знаю, понимаю ли вы то, что вы подразумеваете под «правилом», но я не знаю координаты пограничной точки. Мне нужно подсчитать ее. –

+0

Вы хотите выбрать точки на границах двух фигур, через которые линия, соединяющая центр двух форм? Или нижняя точка на границе верхней формы и самая верхняя точка на границе нижней формы? Или какое-то другое правило? – Synergist

ответ

1

Вы можете сделать метод, который принимает угол и возвращает точку на границе под этим углом от центра. Это включает в себя небольшую тригонометрию и случаи для квадрата. Чтобы провести линию между границами двух форм, определите угол разностного вектора atan2 (разность ys, разность xs). Выберите точку на границе с этим углом. (Это выбирает точку, которая находится на сегменте линии, соединяющем центры. Вы можете изменить это, если хотите.) Соедините две точки, которые вы получаете с линией, и добавьте головку стрелки.

Смежные вопросы