Название: Задача на технику Отправлено: Igors от Май 29, 2013, 17:27 Добрый день
Тут разговор зашел о технике программирования, насколько важно уметь владеть тем или иным, и все такое. В принципе это нормально, но не хватает конкретики. Попробуем на более живом примере. Есть фигуры: напр плоскость и сфера, состоят из точек и треугольников (первый аттач). Надо: нарисовать силуэты этих же фигур (второй аттач) Вывод на экран производится ф-цией (полагаем что она уже есть) Код Можно: использовать все что угодно, любые тулзы, любой формат исходных данных по своему вкусу, лишь бы вывод сводился к DrawLine. Удачи :) Название: Re: Задача на технику Отправлено: SimpleSunny от Май 29, 2013, 21:24 Вы бы ограничения посущественней наложили, а то можно просто
Код
Название: Re: Задача на технику Отправлено: Igors от Май 30, 2013, 08:09 Вы бы ограничения посущественней наложили, а то можно просто Ну так нарисуется "каша-мала", никто не обещал что точки следуют в каком-то определенном порядке. Нарисовать первую картинку можно напр такКод
Код Здесь объект obj имеет контейнеры точек (point) и треугольников (tri). Однако можно использовать любые структуры данных по своему вкусу Название: Re: Задача на технику Отправлено: Авварон от Май 30, 2013, 10:39 Вы бы ограничения посущественней наложили, а то можно просто Ну так нарисуется "каша-мала", никто не обещал что точки следуют в каком-то определенном порядке. Нарисовать первую картинку можно напр такКод
Код Здесь объект obj имеет контейнеры точек (point) и треугольников (tri). Однако можно использовать любые структуры данных по своему вкусу Типа вы ща намекаете на то, что некоторые линии будут рисоваться дважы (на стыке треугольников)? :) Не претендую на "знатока", ибо думать и писать своё решение лень, но изъны в чужих решениях поищу :) А вот доустим вопрос - наксолько медленная ф-ия рисования? Если я заведу хэш и буду в него складывать координаты линий, а потом по нему пробегусь - это будет быстрее, или "овчинка выделки не стоит" и DrawLine достаточно быстрая? Название: Re: Задача на технику Отправлено: Bepec от Май 30, 2013, 10:50 Мнение неспециалиста - если нет ограничений по красивости, то заливать все замкнутые зоны. В конце концов у нас останется контур залитый цветом. :D
Название: Re: Задача на технику Отправлено: Igors от Май 30, 2013, 10:55 Типа вы ща намекаете на то, что некоторые линии будут рисоваться дважы (на стыке треугольников)? :) Не претендую на "знатока", ибо думать и писать своё решение лень, но изъны в чужих решениях поищу :) Задача - нарисовать силуэт, при этом рисовать одну линию дважды не запрещено. Ну а если оптимизировать - то чего же бегать с хешем на каждом рисовании? Тогда уж подготовить все пинии один раз. А вот доустим вопрос - наксолько медленная ф-ия рисования? Если я заведу хэш и буду в него складывать координаты линий, а потом по нему пробегусь - это будет быстрее, или "овчинка выделки не стоит" и DrawLine достаточно быстрая? Название: Re: Задача на технику Отправлено: Igors от Май 30, 2013, 10:58 Мнение неспециалиста - если нет ограничений по красивости, то заливать все замкнутые зоны. В конце концов у нас останется контур залитый цветом. :D Так возни много с пикселями, да и объекты могут находиться один за другим или вообще пересекаться. Название: Re: Задача на технику Отправлено: Bepec от Май 30, 2013, 11:00 Таки возни не особо много, объекты один за одним - кому это мешает? :) Нам нужен контур.
PS другой вопрос, если вы забыли добавить в условие, что будут иметься незамкнутые или "дырчатые" контуры. Название: Re: Задача на технику Отправлено: Igors от Май 30, 2013, 11:08 Таки возни не особо много, объекты один за одним - кому это мешает? :) Нам нужен контур. "дырчатые" входит в понятие "силуэт". "Незамкнутых" нет, все состоит из треугольников имеющих площадь. Поэтому силуэт может состоять из любого числа контуров, но все они замкнутыPS другой вопрос, если вы забыли добавить в условие, что будут иметься незамкнутые или "дырчатые" контуры. Название: Re: Задача на технику Отправлено: Igors от Июнь 01, 2013, 08:57 Однако ... неужели у всех также "плохо с графикой" как у Вереса? :) Ведь какие линии рисовать - довольно очевидно.
Случай 1: (плоскость) если линия входит только в один треугольник Случай 2: (сфера) если линия входит в 2 треугольника имеющих общую плошадь (перекрывающих друг друга на экране). Пример triangle1(p0, p1, p2) triangle2(p0, p1, p3) Отрезок (p0, p1) должен быть отрисован для силуэта если p2 и p3 лежат по одну сторону прямой (p0, p1). Или, др словами, если направления обхода совпадают. Ладно, "даю формулы" Код Ну все, дальше "дело техники", теперь я буду наверняка расстрелян с помощью С++ 11, std::bind и.т.п. А также прибит к позорному столбу за незнание буста, неуменме найти и.т.п. Прошу исполнить :) |