|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.11.2017, 20:02 | #11 | ||||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
pu4koff У LV1974 всегда так. По началу темы неясен предмет обсуждения, потом как-то всё само собой образумивается.
Не все. Microsoft Office, PhotoShop, AutoCad, видео-плейры, браузеры. Цитата:
Вы мне тут напомнили разработчиков Blender'а, которые считают не багом, а фичей. Когда у них движок неправильное рассчитывает выделение. А вину тому сглаживание GPU на котором они считают HitTest. . Цитата:
Цитата:
Цитата:
Базируется по другому основывается. Разве графическая подсистема основана на математическом ядре? Да она его использует и использует по полному. Но не базирется, а именно использует. Поэтому математическое ядро и геометрическое можно вынести в отдельную библиотеку. Вот вам и решение проблемы с дублирование кода. Теперь, что касается дублирования данных. Согласно принципам ООП объекты должны быть максимально независимые. Такое определения плохо отражает суть, так как допускает исключение из правил. Дело в том, что объекты могут и должны быть независимыми без каких либо исключений. Такие объекты ещё называют тесто-пригодными. Так вот есть паттерн MVC. С - контроллер. В нашем случае это обработка перемещения, масштабирования и прочее. M - модель. В нашем случае это данные объектов. Фигуры содержат геометрические данные, а инструменты содержат параметры кисти, пера. V - отображение. В функцию отображения передаются указания на фигуры и характеристики кисти/пера. Одни и тежи данные мы можем отобразить по разному. К примеру с рамкой выделения или без. Если мы-бы хранили выделение в графическом объекте, то тогда бы у нас была тесная связь между отображение геометрию и моделью. Вывод надо разделять. Отказываемся от графического объекта. И разбиваем его на геометрию и инструменты. А способ выделения вынести в параметры функции отображения. Но это неудобно. Если параметров будем много их надо выделить в отдельный объект. Стиль - который будет содержать данный параметр, а так же кисть и перо. Так как объект фигуры содержит только геометрию, то его нет смысла тестировать. Зато тестируем геометрическую библиотеку, там просто набор функций без объектов. Поэтому они легко тестируются. Отображение тоже легко тестируется так как содержит один-два последовательных цикла. А самое сложное это контролер. Он содержит указатель на фигуру и на стиль. И кучу внутренних функций. Что-бы облегчить тестирование применяем шаблон mutable. Он будет в место нуливых указателей подставлять объекты по умолчанию. PS. Нет сил корректировать пост, прошу за ошибки простить. Так что до завтрого.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 24.11.2017 в 20:11. |
||||
25.11.2017, 11:25 | #12 | |
Заблокирован
Регистрация: 09.08.2017
Сообщений: 1,136
|
Цитата:
Смотрите сюда: Код:
Смотрите сколько членов для расчёта! Чтобы использовать этот класс, надо дублировать основные параметры дуги у себя. И перед каждой отрисовкой передавать их через конструктор или init(...). Это очень не рационально. Также и в GDI и в System.Drawing приходиться вызывать DrawArc(...). Альтернативный путь - предоставить доступ get/set к основным параметрам класса и предоставить метод Update() для регулярного пересчёта остальных параметров. Это не только эффективнее, но и проще. Последний раз редактировалось LV1974; 25.11.2017 в 15:26. |
|
25.11.2017, 12:20 | #13 |
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,529
|
У меня есть опыт написания текстового редактора (1997 г.)
Я даже графический редактор сделал (1994 г.) Мой практический опыт в этой теме: http://programmersforum.ru/showpost....9&postcount=31 Скажу прямо - не получилось. Для этого надо знать линейную алгебру, а я её забыл, потому что учил в 1993-ем году. Надо брать учебник и проходить всё заново... Теперь, даже если надо просто перемножить векторы, самостоятельно это очень трудно (для решения алгебраических задач).
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... |
25.11.2017, 13:21 | #14 | |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
Цитата:
dosbox.png |
|
25.11.2017, 17:23 | #15 | |
Заблокирован
Регистрация: 09.08.2017
Сообщений: 1,136
|
Цитата:
Линейной алгебры не надо бояться. - Основы для вычисления пересечений и проецирования, вспоминаются за пару дней. Ещё день можно потратить на поиск подходящей либы. Моя проблема - это интересный проект и нормальный заказчик. Вот поэтому-то я и страдаю здесь от безделья и перфекционизма. |
|
25.11.2017, 17:30 | #16 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
забить на стартапы. уйти на зарплату в графическую компанию, где нужно работать, а не изобретать.
|
25.11.2017, 17:42 | #17 | ||
Заблокирован
Регистрация: 09.08.2017
Сообщений: 1,136
|
Цитата:
Пока я не нашёл серебряной пули для этой проблемы. Цитата:
Однако 10 лет назад, когда я писал LikeView, то отказался от этой схемы. Мне надо было постоянно иметь всё под рукой. Поэтому я сделал контекст управления, по аналогии с классом графического контекста. Кстати, я так слышал, что разработчики angular сделали примерно тоже самое. Дело в том, что существует неоднозначность при реализации некоторых возможностей в рамках MVC. Например - куда положить стеки откатов - в модель или в контроллер ? Другой пример - несколько видов. Вид как холст, как многостраничный документ, для печати и вид для обзора-навигации. Эту тему наверное лучше излагать через семантически ортогональные возможности и способности. Обычно, каждая такая способность даст иерархию классов. Например:
Последний раз редактировалось LV1974; 25.11.2017 в 18:25. |
||
25.11.2017, 17:44 | #18 | |
Заблокирован
Регистрация: 09.08.2017
Сообщений: 1,136
|
Цитата:
+ очень сложно найти хорошего заказчика или работодателя. кроме этого у меня эргофобия. раньше терпел ВСД. а сейчас уже не молод. не хочу я снова так маяться с бессонными ночами, неврозами и паническими атаками. даже за 300 т.р. не пойду. мне для жизни достаточно 30 т.р. а если будет не хватать - пойду метлой махать. https://www.youtube.com/watch?v=exoMmJhvGOo Последний раз редактировалось LV1974; 25.11.2017 в 18:10. Причина: + |
|
25.11.2017, 18:14 | #19 | |||
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,529
|
Цитата:
Между прочим, Celeron не шумит вентилятором, как Pentium IV, - у него его нет. Сдох. Охлаждение пассивное. И у этого пацана нет за душой 7 системных ящиков б/у за 2000-2010 гг. Цитата:
Цитата:
Вопросов для разработки куда больше, чем программистов. Я вот учебники читаю.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... Последний раз редактировалось jura_k; 25.11.2017 в 18:30. |
|||
27.11.2017, 10:54 | #20 |
Заблокирован
Регистрация: 09.08.2017
Сообщений: 1,136
|
Иерархии классов интерактивного редактора
Код:
Последний раз редактировалось LV1974; 27.11.2017 в 11:25. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Геометрия, как найти скалярное произведение? | Алексей_2012 | Помощь студентам | 8 | 10.11.2014 23:29 |
Как откосить от информатики? | Max1548 | Свободное общение | 5 | 25.10.2011 17:18 |
Как Программно создать раздел E:\ | KWN, lnc | Общие вопросы Delphi | 18 | 27.08.2009 13:37 |
как добавить модули в раздел uses | kate158 | Общие вопросы Delphi | 1 | 25.08.2009 09:52 |