Использование MC# для реализации параллельных алгоритмов в 3D-графике. Е.С.Борисов, http://mechanoid.narod.ru Институт кибернетики им. В.М.Глушкова АН Украины пространственная система “вморожена” в объект. пространственная система жестко связана с наблюдателем. плоская система это экран, на который мы будем отображать наш объект. Причём Oэк X эк || Oн X н , Oэк Yэк || OнYн Каждая точка задаётся координатами в системе OXYZ. Для проецирования точки на экран необходимо выполнить два преобразования: 1. Видовое преобразование. Переход от абсолютной системы координат OXYZ к системе координат наблюдателя. Матрица перехода V запишется следующим образом: где: c1 c 2 s1 s 2 s3 c 2 s3 V c s c s s 3 1 1 2 3 0 c1 cos( ); s1 sin( ) c1 s3 c3 s1 s 2 c 2 c3 s1 s3 c1 c3 s 2 c 2 s1 s2 c1 c 2 0 p xн yн zн1 xyz1*V c 2 cos( ); s 2 sin( ) c3 cos( ); s3 sin( ) 2. Перспективное преобразование - проецирование на экран. x x эк н d zн где d Oн Oэк y эк yн d zн - расстояние от наблюдателя до экрана 0 0 0 1 Параллельный классификатор образов Искусственная нейронная сеть это совокупность нейронных элементов и связей между ними. Рисунок 1 Математическая модель нейрона Рисунок 2. Различные виды функции активации Важной особенностью НС является возможность ее обучения. Процесс обучения НС сводится к процедуре корректировки весовых коэффициентов. Однослойный персептрон из 10 нейронов. 35 входов. 10 выходов Рисунок 3. Однослойная НС Использована пороговая функция активации с порогом T=0 1, si T y i f ( si ) 1, si T В качестве метода обучения используется дельта-правило Видроу-Хоффа wij (t 1) wij (t ) x j ein На этапе инициализации программы по учебным паттернам генерируется матрица весовых коэффициентов, которая в последствии используется для независимой обработки множества входных образов. Результат работы программы: .OOO. O...O O.... OOOO. O...O O...O .OOO. OOOOO ....O ....O ...O. ..O.. .O... O.... .OOO. O...O O...O .OOO. O...O O...O .OOO. 6 7 8 Дополнения языка MC# •abstract •virtual •class bobo {...}; ( ; после } ) •public bobo(int i):base(i){ ... } ( вызов в конструкторе base(...) ) •..override...f( int i) { base.f(i); ..} ( вызов метода предка base.f(i) ) •namespace