PDA

Просмотр полной версии : [Вопрос] Определить линейность по массивам координат



UnO
26.01.2018, 14:01
Есть у меня два массива с координатами x и y, нужно определить принадлежат ли их точки одной линии. В школе на алгебру забил, прошу помощи у тех, кто этого не сделал :smile:

Daniel_Cortez
26.01.2018, 20:29
Для начала нужно вычислить соотношение расстояний между первыми двумя точками (0 и 1) по осям X и Y:


new Float:dx = x[1] - x[0];
new Float:dy = y[1] - y[0];
new Float:dist_ratio01 = dx / dy;

Теперь выясним то же соотношение расстояний между точками 1 и 2 и сравним его с соотношением между точками 0 и 1:


dx = x[2] - x[1];
dy = y[2] - y[1];
new Float:dist_ratio = dx / dy;
if (dist_ratio == dist_ratio01)
{
// Если соотношение равно - точки 0, 1 и 2 расположены на одной линии
}
else
{
// Точки не расположены на одной линии
}

И дальше точно так же сравнивайте расстояния между остальными парами точек: 2-3, 3-4, ...

UnO
27.01.2018, 01:03
Для начала нужно вычислить соотношение расстояний между первыми двумя точками (0 и 1) по осям X и Y:


new Float:dx = x[1] - x[0];
new Float:dy = y[1] - y[0];
new Float:dist_ratio01 = dx / dy;

Теперь выясним то же соотношение расстояний между точками 1 и 2 и сравним его с соотношением между точками 0 и 1:


dx = x[2] - x[1];
dy = y[2] - y[1];
new Float:dist_ratio = dx / dy;
if (dist_ratio == dist_ratio01)
{
// Если соотношение равно - точки 0, 1 и 2 расположены на одной линии
}
else
{
// Точки не расположены на одной линии
}

И дальше точно так же сравнивайте расстояния между остальными парами точек: 2-3, 3-4, ...

Всё настолько просто, лол. Спасибо.