Re[5]: Codepedia. Взгляд вглубь. (читать придется много :) )
От: FreshMeat Россия http://www.rsdn.org
Дата: 30.09.05 10:44
Оценка:
Здравствуйте, anonymous, Вы писали:

FM>>Таким образом отказываемся от ООП.


A>да, выходит так... либо придется писать в аннотации что-то вроде:

A>

A>template < class T >
A>bool is_intersect_lines2( T l0, T l1 );
A>

A>Класс прямой T толжен иметь атрибуты с названиями p0x, p0y, p1x, p1y, в которых хранятся координаты точек, через которые проходит данная прямая.

Верно, получаем вариант, который развивается здесь
Автор: Зверёк Харьковский
Дата: 29.09.05


FM>>Компактно-крохотных сниппетов может оказаться совсем немного.

A>в этом я не уверен, все же алгоритмов существует достаточно много, плюс различные реализации этих алгоритмов...
Да, действительно, только получается вот какая ситуация: у нас будут реализованы алгоритмы — пересечение линий, совпадение отрезков, отсечение треугольника, попадание точки внутрь многоугольника, проверка многоугольника на самопересечения и выпуклость и т.д. — будет много действий, но не будет понятий, над которыми эти действия производятся. Странно

FM>>Конечно, эту проблему можно переложить на пользователя, потребовать обязательно проверять передаваемые параметры, но тогда код становится более опасным (для меня это было бы уже достаточной причиной отказаться от использования такого сниппета)


A>согласен... хотя переложить эту проблему на пользователя не такая уж и плохая идея, просто нужно честно предупредить его в аннотации о всех ограничениях...

A>к примеру, хочет пользователь метод CLine.IsIntersectWith(CLine&), берёт он функцию is_intersect_lines2() и вставляет её вызов в тело метода... проверка подобная указанной уже не нужна, поскольку реализована в конструкторе CLine...
Да, можно, но перед тем, как использовать такой код, я трижды подумаю

A>есть ещё идея автоматически генерировать такие методы, по некоему описанию класса, заданному пользователем, на основе вот таких сниппетов функций... но как, пока не ясно...

Интересная идея. Надо осмыслить.

FM>>p00x == p01x Эту операцию должен предоставлять пользователь — получаем еще один параметр у is_intersect_lines2, указатель на функцию сравнения.

A>при использовании классов будет то же самое...
Да, при любом подходе будем иметь зависимость от этой операции.
A>кроме того, поскольку ООП не будет, то будут использоваться только базовые типы, а для них эта операция определена...
Не так, как нужно — нам придется расширять ее, чтобы учитывалась погрешность (один из возможных вариантов).

FM>>2. Немножно субъективизма.

FM>>Посмотрим на другую ф-ю — определение точки пересечения прямых в 3d. Просто прикинем ее сигнатуру.
FM>>...
FM>>К чему это говорю — такую страшилку использовать в своем проекте захочется только от большоой тоски, чесслово
A>честно говоря, не вижу смысла в такой функции, её можно разделить на три вызова intersect_lines2()...
Может не совсем точно выразился — ф-я должна найти точку пересечение двух прямых в трехмерном пространстве.
Хорошо там, где мы есть! :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.