Страница 1 из 1
Геометрия
Добавлено: 03 апр 2005, 11:17
regromus
8) Привет всем!!!
Помогите пожалуйста, желателен код, вот с ткой задачей:
Дано 3n точек на плоскости. Нужно сделать чтобы никакие 3 из них не лежали на одной прямой.
8) Спасибо....
Добавлено: 03 апр 2005, 13:14
Hup
т.е. нужно бросать точки на плоскость и проверять чтобы брошенная точка не попадала в счастливую тройку?
Я правильно понял?
P.S> В принципе при таком раскладе идея есть, но там прийдется много перебирать данных.
Добавлено: 03 апр 2005, 13:56
AiK
regromus, код это сильно сказано

На раздел "Решите мне задачку"
Даю идею. Любые две точки лежат на прямой, которую можно задать следующим образом:
(x-x0)/(x1-x0) = (y-y0)/(y1-y0). Третья точка лежит на этой прямой в случае, если подставив её координаты (x3,y3) в это уравнение вместо x и y ты получишь верное тождество. Такие точки сдвигаешь по x и по y в рандомном направлении на рандомное число в диапазоне от 0 до 1. И повторяешь проверку для всех точек. Может быть точки можно сдвигать по более интеллектуальному принципу, но его изобретать мне лениво.
Добавлено: 03 апр 2005, 14:52
Hup
Перебираешь все возможные пары точек на плоскости и при этом делаешь следующие проверки
Вычисляешь расстояние между парой точек(не сложно) и считаешь 2- расстояния от третей до каждой заданой(короче вычисляешь стороны предпологаемого треугольника АВС)
если АВ = АС + СВ ---> точка лежит на прямой, иначе нет
и еще условия типа АС < AB и CB < AB
Долее как уже выразился Aik, рандом рулит

Добавлено: 04 апр 2005, 12:15
WinMain
Здесь можно воспользоваться обычным уравнением прямой на плоскости Y = AX + C.
Имея координаты X и Y двух точек прямой, можно найти значения A и C. После этого нужно сравнить другие пары точек массива и если их значения A и C будут совпадать, то эта точка будет являться продолжением одной из имеющихся прямых. Но здесь есть одно исключение: при вычислении значения коэффициента A нужно чтобы координаты X обеих точек не совпадали, иначе будет деление на 0. В таком случае нужно просто проверить в массиве наличие третьей точки с такой же координатой X.
При написании алгоритма для рассчёта уравнения прямых нужно будет учитывать, что прямая из точки Т1 в точку Т2 и прямая из точки Т2 в Т1 - это одна и та же прямая, поэтому кроме массива точек необходимо будет организовать ещё динамический массив прямых для каждой пары точек, чтобы избежать ошибок из-за дублирования прямых.
Добавлено: 04 апр 2005, 16:31
AiK
WinMain, типа решил выпендрится?

Если подставить координаты точек в твоё уравнение y = kx+ c, то получится уравнение, которое я привёл выше.