Рассчитать пиксели между двумя точками на изображении - PullRequest
3 голосов
/ 07 марта 2012

Оказывается, я не очень хорошо объясняю, что я хочу сделать, поэтому я снова переписываю весь вопрос и добавляю графику, чтобы помочь в объяснении.

Я разрабатываю приложение для Android / iPhone.Я уже разработал один алгоритм для него, но застрял на следующем.То, что я собираюсь сделать, это поместить две горизонтальные линии на изображение (любое изображение, просто изображение, сделанное iPhone / android), а затем вычислить, на каком пикселе находятся линии, чтобы затем вычислить количество пикселей между ними.Т.е. возьмите это изображение:

http://i.stack.imgur.com/41vS1.png

Затем поместите две горизонтальные линии в любом месте изображения, например так:

http://i.stack.imgur.com/ne4tV.png

Что яхотите вычислить это значение у, или сколько вертикальных пикселей между двумя линиями.Для этого я должен знать, на каком пикселе лежат две линии.Предполагая, что горизонтальные линии имеют высоту всего 1 пиксель, что я бы использовал, чтобы определить, на каком пикселе в изображении лежит линия.Т.е. каково значение y-пересечения (y = mx + c) или c на каждой из горизонтальных линий.Чтобы объяснить, что я имею в виду, давайте предположим, что изображение является графиком.Каждый пиксель равен значению 1, поэтому для изображения с разрешением 1920x2560 максимальное значение оси Y будет 1920, а максимальное значение оси X будет 2560. Как мне разработать алгоритм для вычисления того, чтоу-пересечение обеих строк есть?

1 Ответ

3 голосов
/ 07 марта 2012

Расстояние между двумя точками (Пифагора):

dx = x1 - x2;
dy = y1 - y2;

dist = sqrt (dx*dx + dy*dy);

Расстояние между двумя горизонтальными линиями:

d = y1 - y2;

Если ваши линии определены как y1 = k1x + n1 и y2 = k2x + n2, то (они горизонтальны, k1 и k2 равны 0) расстояние между ними равно n2 - n1.

РЕДАКТИРОВАТЬ: хорошо, после того, как вы отредактировали свой вопрос, теперь это имеет немного больше смысла. Но все же: поскольку вы (или пользователь) добавляете строки, ваш код всегда знает , где они лежат. Их конечные координаты будут:

line1: {(0, y1) :( picture.width, y1)} line2: {(0, y2) :( picture.width, y2)} расстояние: | y2-y1 |

Поскольку они оба горизонтальны, они, конечно, никогда не пересекаются.

Вы должны просто сохранить ссылку на y1 и y2 (из кода размещения строк) в соответствующем месте. Поскольку ваш вопрос касается Android и iOS, ответ таков: в той части кода, которая соответствует model в MVC.

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