Расчет радиуса для местоположений вне экрана - PullRequest
3 голосов
/ 02 марта 2012

Вопрос:

Как я могу принять во внимание прямоугольную форму экрана, чтобы гарантировать, что круги нарисованы точно по границе заполнения?

Следующее работает для «круглой» области, но не прямоугольный ...

dx = abs(center.x - place.x);
dy = abs(center.y - place.y);
dh = Math.sqrt((dx * dx) + (dy * dy));
radius = dh - padding;

Halo Design: Halo idea

Если проблема не кажется очевидной, следующее изображение представляеттекущий подход, который я использую.В зависимости от того, где находится место, зависит, насколько далеко оно выступает в пространство экрана.enter image description here

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

Я думаю это должно сработать.Не испытано.

dx = abs(placeLocationPixels.x - ourLocationPixels.x)
dy = abs(placeLocationPixels.y - ourLocationPixels.y)

ox = dx - ((screenSize.x / 2) - padding);
oy = dy - ((screenSize.y / 2) - padding);

if (ox < 0) ox = 0;
if (oy < 0) oy = 0;

radius = sqrt((ox*ox) + (oy*oy));

edit: это не на каком-либо конкретном языке.

0 голосов
/ 02 марта 2012

Я не уверен, но, возможно, вы можете рассчитать выпуклый корпус, а затем описать его в виде прямоугольника, тогда у вас будет масштаб вашей карты, чтобы каждый круг отображался на экране.

здесь: вы можете найти информацию о выпуклой оболочке: http://en.wikipedia.org/wiki/Convex_hull

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