- •Часть 1. Человек-оператор в системах управления………………………
- •2.2. Системы ручного управления
- •1. Введение
- •1.1. История технической эстетики и художественного конструирования в России и за рубежом
- •1.2. Цели, которые преследовало развитие дизайна
- •1.3. Основные принципы технической эстетики
- •1.4. Проблемы эргономики
- •2.2.1. Общие черты систем ручного управления
- •2.2.2. Следящие системы ручного управления
- •Слежение с компенсацией
- •Слежение с преследованием
- •2.1. Человек-оператор в системах управления
- •2.2. Системы ручного управления
- •2.3. Системы автоматизированного управления
- •2.4. Проблемы эргономического подхода к проектированию систем с человеком-оператором
- •2.5. Упрощенная передаточная функция человека-оператора в режиме компенсаторного слежения
- •2.6. Реакции человека-оператора
- •2.7. Структура деятельности человека-оператора
- •2.8. Точность человека-оператора и его влияние на точность системы управления
- •2.8.1. Алгоритм анализа и контроля ошибок человека-оператора
- •2.8.2. Структура ошибок человека-оператора
- •2.8.3. Способы повышения точности операторов
- •2.9. Надежность человека-оператора
- •2.9.1. Способы повышения надёжности
- •2.10. Работоспособность человека-оператора
- •2.11. Помехоустойчивость человека-оператора
- •2.11.1. Эффект Ли
- •2.12. Оптимальная зона условий работоспособности человека-оператора
- •3. Анализаторы человека
- •3.1. Характеристики анализаторов
- •2. Пространственные характеристики (зона действия).
- •3. Временные характеристики.
- •3.2. Зрительный анализатор человека и его свойства
- •3.2.1. Строение глаза человека
- •3.2.2. Свойства глаза
- •3.2.2.9. Мнимые эффекты зрения.
- •3.2.3. Характеристики зрительного анализатора человека
- •3.2.4. Особенности цветового восприятия
- •3.3. Звуковой анализатор человека
- •3.3.1. Характеристики звукового анализатора
- •3.4. Закон Вебера-Фехнера
- •4. Некоторые сведения из теории информации и инженерной психологии
- •4.1. Количество информации
- •4.1.1. Свойства количества информации
- •4.1.2. Избыточность информации
- •4.1.3. Скорость создания информации
- •4.1.4. Пропускная способность
- •4.2. Факторы, влияющие на переработку информации
- •4.2.1. Объективные характеристики сообщений и сигналов
- •4.2.2. Условия работы человека оператора
- •4.2.3. Индивидуальные характеристики человека оператора
- •4.3. Применение теории информации в инженерной психологии
- •4.3.1. Информационные оценки восприятия и памяти
- •4.3.1.1. Кратковременная память
- •4.3.1.2. Долговременная память
- •4.3.2. Модели работы человека-оператора как канала связи
- •4.4. Способы борьбы с избытком и недостатком информации
- •4.5. Оценка полезности информации
- •5. Художественное конструирование
- •5.1. Принципы и закономерности художественного конструирования
- •5.2. Композиция как средство выражения художественных качеств форм
- •5.2.1. Виды композиции
- •5.2.1.1. В зависимости от формы изделия
- •5.2.2. Единство композиции
- •5.3. Средства гармонизации формы промышленных объектов
- •5.3.1. Пропорция
- •Основные принципы построения интерфейсов
- •Золотое сечение
- •Кошелек Миллера
- •Принцип группировки
- •Бритва Оккама, или kiss
- •Видимость отражает полезность
- •Умное заимствование
- •Часть 2. Компьютерная графика как инструмент проектирования интерфейса
- •Введение
- •6.1. От наскальных рисунков – к компьютерной анимации
- •6.2. Классификация проблем, связанных с графическими изображениями
- •6.3. Направления развития компьютерной графики
- •6.4. Направления совершенствования компьютерной графики
- •7. Разновидности компьютерной графики
- •7.1. Растровая графика
- •7.2. Векторная графика
- •Фрактальная графика
- •7.4. Цветовые модели и режимы
- •Аффинные преобразования на плоскости
- •8.1. Вращение (поворот)
- •8.2. Растяжение (сжатие)
- •8.3. Отражение
- •8.4. Перенос обеспечивают соотношения
- •8.5. Однородные координаты точки
- •8.6. Представление преобразований на плоскости с помощью матриц 3-го порядка
- •8.7. Преобразования в пространстве
- •8.7.1. Вращение в пространстве
- •8.7.2. Растяжение (сжатие), или масштабирование в пространстве
- •8.7.3. Отражение в пространстве
- •8.7.4. Перенос в пространстве
- •8.8. Примеры
- •Проектирование
- •9.1. Виды проектирования
- •9.2. Ортографические проекции
- •9.3. Аксонометрические проекции
- •9.4. Косоугольные проекции
- •9.5. Центральные (перспективные проекции)
- •10. Растровые алгоритмы
- •10.1. Понятие связности
- •10.2. Растровое представление отрезка. Алгоритм Брезенхейма
- •Основные алгоритмы вычислительной геометрии
- •11.1. Отсечение отрезка. Алгоритм Сазерленда – Коэна
- •11.2. Алгоритм определения принадлежности точки многоугольнику
- •11.3. Закраска области, заданной цветом границы
- •Закрашивание
- •Функция закрашивания
- •12.2. Закраска методом Гуро (Gouraud)
- •12.3. Закраска методом Фонга (Phong)
- •Удаление невидимых линий и поверхностей
- •13.1. Построение графика функции двух переменных. Линии горизонта
- •13.2. Отсечение нелицевых граней
- •13.3. Алгоритм Робертса
- •13.4. Алгоритм Аппеля (Количественная невидимость)
- •Удаление невидимых граней
- •14.1. Метод трассировки лучей
- •14.2. Метод z-буфера
- •14.3. Алгоритмы упорядочения
- •14.3.1. Метод сортировки по глубине. Алгоритм художника
- •14.3.2. Метод двоичного разбиения пространства
- •14.4. Метод построчного сканирования
- •14.5. Алгоритм Варнака
- •Геометрические сплайны
- •15.1. Сплайн-функции. Случай одной переменной
- •15.2. Сплайновые кривые
- •15.3. Сглаживающие кривые. Кривая Безье
13.2. Отсечение нелицевых граней
Рассмотрим многогранник, для каждой грани которого задан единичный вектор внешней нормали (рис. 13.2.1.). Несложно заметить, что если вектор нормали грани n составляет с вектором l, задающим направление проектирования, тупой угол (вектор нормали направлен от наблюдателя), то эта грань заведомо не может быть видна. Такие грани называются нелицевыми. Если соответствующий угол является острым, грань называется лицевой. При параллельном проектировании условие на угол, для того чтобы грань была видна, можно записать в виде неравенства (n, l) ≤ 0, поскольку направление проектирования от грани не зависит. При центральном проектировании с центром в точке с вектор проектирования для точки р будет равен l = с - р.
Для определения того, является заданная грань лицевой или нет, достаточно взять произвольную точку p этой грани и проверить выполнение условия (n, l) ≤ 0.
Знак этого скалярного произведения не зависит от выбора точки на грани, а определяется тем, в каком полупространстве относительно плоскости, содержащей данную грань, лежит центр проектирования. Так как при центральном проектировании проектирующий луч зависит от грани (и не зависит от выбора точки на грани), то лицевая грань может стать нелицевой, а нелицевая может стать лицевой даже при параллельном сдвиге. При параллельном проектировании сдвиг не изменяет углов и то, является ли грань лицевой или нет, зависит только от угла между нормалью к грани и направлением проектирования.
Заметим, что если по аналогии с определением принадлежности точки многоугольнику пропустить через произвольную точку картинной плоскости проектирующий луч к объектам сцены, то число пересечений луча с лицевыми гранями будет равняться числу пересечений луча с нелицевыми гранями.
В случае, когда сцена представляет собой один выпуклый многогранник, удаление нелицевых граней полностью решает задачу удаления невидимых граней.
Рис. 13.2.1. Многогранник, с заданными для каждой грани, векторами l,n.
Хотя в общем случае предложенный подход и не решает задачи удаления полностью, но тем не менее позволяет примерно вдвое сократить количество рассматриваемых граней вследствие того, что нелицевые грани всегда не видны; что же касается лицевых граней, то в общей ситуации части некоторых лицевых граней могут быть закрыты другими лицевыми гранями.
Ребра между нелицевыми гранями также всегда не видны. Однако ребро между лицевой и нелицевой гранями вполне может быть и видимым.
13.3. Алгоритм Робертса
Первым алгоритмом удаления невидимых линий был алгоритм Робертса, требующий, чтобы каждая грань была выпуклым многоугольником. Опишем этот алгоритм.
Сначала отбрасываются все ребра, обе определяющие грани которых являются нелицевыми (ни одно из таких ребер заведомо не видно). Следующим шагом является проверка на закрывание каждого из оставшихся pебер со всеми лицевыми гранями многогранника. Возможны следующие случаи:
• грань ребра не закрывает (рис. 13.3.1 а);
Рис. 13.3.1 Варианты расположения ребра и грани.
• грань полностью закрывает ребро (тогда оно удаляется из списка рассматриваемых ребер) (рис. 13.3.1 б);
• грань частично закрывает ребро (в этом случае ребро разбивается на несколько частей, видимыми из которых являются не более двух; само ребро удаляется из списка, но в список проверенных ребер добавляются те его части, которые данной гранью не закрываются) (рис. 13.3.1 в).
Рассмотрим, как осуществляются эти проверки.
Пусть задано ребро АВ, где точка А имеет координаты (xa, ya), а точка В – (хb, уb).
Прямая, проходящая через отрезок АВ, задается уравнениями
причем сам отрезок соответствует значениям параметра
Данную прямую можно задать неявным образом как
где
.
Предположим, что проекция грани задается набором проекций вершин Р1, ..., Pk с координатами (хi,уi), i = 1,...,n. Обозначим через Fi значение функции F в точке Pi и рассмотрим i-й отрезок проекции грани Рi, Рi+1. Этот отрезок пересекает прямую АВ тогда и только тогда, когда функция F принимает значения разных знаков на концах этого отрезка, а именно при
Случай, когда
будем отбрасывать, чтобы дважды не засчитывать прямую, проходящую через вершину, для обоих выходящих из нее отрезков. Итак, мы считаем, что пересечение имеет место в двух случаях:
Точка пересечения определяется соотношениями
где
Отсюда легко находится значение параметра t:
Возможны следующие случаи:
1. Отрезок не имеет пересечения с проекцией грани, кроме, быть может, одной точки. Это может иметь место, когда • прямая АВ не пересекает ребра проекции (рис. 13.3.2, а);
• прямая АВ пересекает ребра проекций в двух точках t1 и t2, но либо t1<0, t2<0, либо t1 > 1, t2 > 1 (рис. 13.3.2, б);
• прямая АВ проходит через одну вершину, не задевая внутренности треугольника (рис. 13.3.2, в).
Очевидно, что в этом случае соответствующая грань никак не может закрывать собой ребро АВ.
Рис. 13.3.2. Пример пересечения отрезка с проекциями граней.
2. Проекция ребра полностью содержится внутри проекции грани (рис. 13.3.3, а). Тогда есть две точки пересечения прямой АВ и границы грани и t1 < 0 < 1 < t2. Если грань, лежит ближе к картинной плоскости, чем ребро, то ребро полностью невидимо и удаляется.
3. Прямая АВ пересекает ребра проекции грани в двух точках и либо t1< 0 ≤t2 ≤ 1, либо 0 < t1 ≤ 1 < t2 (рис. 13.3.3. б и в).
Если ребро АВ находится дальше от картинной плоскости, чем соответствующая грань, то оно разбивается на две части, одна из которых полностью закрывается гранью и потому отбрасывается. Проекция второй части лежит вне проекции грани и поэтому этой гранью не закрывается.
а) б) в) г)
Рис. 13.3.3. Пример пересечения отрезка с проекциями граней.
Прямая АВ пересекает ребра проекции грани в двух точках, причем (рис. 13.3.3 г) 0 < t1 < t2 < 1.
Если ребро АВ лежит дальше от картинной плоскости, чем соответствующая грань, то оно разбивается на три части, средняя из которых отбрасывается.
Для определения того, что лежит ближе к картинной плоскости – отрезок АВ (проекция которого лежит в проекции грани) или сама грань, через эту грань проводится плоскость
(n – нормальный вектор грани), разбивающая все пространство на два полупространства. Если оба конца отрезка АВ лежат в том же полупространстве, в котором находится и наблюдатель, то отрезок лежит ближе к грани; если оба конца находятся в другом полупространстве, то отрезок лежит дальше. Случай, когда концы лежат в разных полупространствах, здесь невозможен (это означало бы, что отрезок АВ пересекает внутреннюю часть грани).
Если общее количество граней равно n, то временные затраты для данного алгоритма составляют О(n2).
Количество проверок можно заметно сократить, если воспользоваться разбиением картинной плоскости.
Разобьем видимую часть картинной плоскости (экран) на N1 · N2 равных частей (клеток) и для каждой клетки Аij построим список всех лицевых граней, чьи проекции имеют с данной клеткой непустое пересечение.
Для проверки произвольного ребра на пересечение с гранями отберем сначала все те клетки, которые проекция данного ребра пересекает. Ясно, что проверять на пересечение с ребром имеет смысл только те грани, которые содержатся в списках этих клеток.
В качестве шага разбиения обычно выбирается О(l), где l – характерный размер ребра в сцене. Для любого ребра количество проверяемых граней практически не зависит от общего числа граней и совокупные временные затраты алгоритма на проверку пересечений составляют О(n), где n – количество ребер в сцене.
Поскольку процесс построения списков заключается в переборе всех граней, их проектировании и определении клеток, в которые попадают проекции, то затраты на составление всех списков также составляют О(n).
