геометрическая программа (С++)
Условие:
Дано действительные числа a, b, c, d, e, f, g, h. Известно, что точки (e, f) и (g, h) - разные. Так же известно что точки (e, f) и (g, h) не лежат на прямой 1, которая задана уравнением y=ax+b. Прямая 1 разбивает координатную плоскость на две полуплоскости. Определить: принадлежат ли точки (e, f) и (g, h) разным полуплоскостям.
делаете функцию с сигнатурой:
Код:
float func_y(float a, float b, float x);
которая будет вам вычислять значение y(x)=ax+b.
это ваша прямая.
ну а чтобы опр. принадлежат ли точки разным полуплоскостям надо использовать условие(школьная геометрия):
Код:
if(((f > func_y(a,b,e)) && (h > func_y(a,b,g)) || ((f < func_y(a,b,e)) && (h < func_y(a,b,g)))
{
// лежат на одной полуплоскости
}
else
{
// лежат на разных полуплоскостях
}
{
// лежат на одной полуплоскости
}
else
{
// лежат на разных полуплоскостях
}
т.е. просто проверяем если (e, f) и (g, h) одновременно выше прямой 1 или ниже прямой 1,
то они лежат на одной полуплоскости, иначе - на разных.