Цель C Формула дистанции развития Iphone - PullRequest
0 голосов
/ 07 ноября 2010

В основном мне нужно вычислить расстояние между точкой и линией (на которой есть две известные координаты) по оси XY. Я получил алгоритм, но не знаю, как реализовать его в ObjC.

Иллюстрация: у меня есть линия, которая проходит через две точки A (100,300) и B (200,100)

m = (y-y1) / x (x-x1) = 300-100 / 100 -200 = -2

так:

-2 (x-x1) = (y-y1)

Замените x и y:

-2 (100-x1) = 200 - y1 <=> -2x + y - 500 = 0 (линейное уравнение, которое проходит выше 2 точек)

И используйте другую формулу для расчета расстояния:

ax + by + c / sqrt (a ^ 2 + b ^ 2)

Заменить x и y точки, которую я хочу вычислить для расстояния C (10,20)

-2 * 1000 + 2000 - 500 / sqrt (100 + 400) = расстояние, которое я хочу найти

Все просто, но как мне это сделать в ObjC?

Окей, это в основном то, что я сделал, и не знаю, как продолжить:

float coordinateXStart;
float coordinateYStart;
float coordinateXEnd;
float coordinateYEnd;

coordinateXStart = [[strokesArray objectAtIndex:strokeNo] startX];
coordinateYStart = [[strokesArray objectAtIndex:strokeNo] startY];
coordinateXEnd = [[strokesArray objectAtIndex:strokeNo] endX];
coordinateYEnd = [[strokesArray objectAtIndex:strokeNo] endY];

//let's rock on distance formula from point to line
float m = (coordinateYEnd-coordinateYStart)/(coordinateXEnd-coordinateXStart);


enter code here

Блокцитата Окей, так что у меня было м .... но как автоматизировать вычисление а, б и с топора + на + с уравнения линии?

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

И после того, как вы знаете библиотеку C Math, вам следует продолжить Язык программирования Objective C

1 голос
/ 07 ноября 2010

Вы сказали -2*1000 + 2000 - 500 / sqrt (100 + 400) = distance I wanna find, а почему бы просто не написать это в коде?

Утверждение:

distance = -2*1000 + 2000 - 500 / sqrt (100 + 400)

Совершенно верно C (фрагмент),и поэтому Objective-C, просто убедитесь, что вы используете C математическую библиотеку first

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