Автор Тема: Полезные ссылки по алгоритмам и структурам данных  (Прочитано 3887 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Предлагаю в этой ветке делиться полезной информацией по всяким алгоритмам и структурам данных.

Вот сносное учебное пособие Новосибирского Государственного Технического Университета:
http://edu.nstu.ru/courses/saod/content.htm

Performance Analysis of BSTs in System Software
« Последнее редактирование: Ноябрь 17, 2013, 08:33:13 pm от ilovb »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Хороший сайтик на английском: http://eternallyconfuzzled.com/jsw_home.aspx
Есть некоторые переводы: http://rflinux.blogspot.ru/2011/10/red-black-trees.html

Valery

  • Full Member
  • ***
  • Сообщений: 101
    • Просмотр профиля
Известный сайт: http://e-maxx.ru/algo/

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Удаление невидимых частей трехмерной сцены с помощью BSP-деревьев

BSP-дерево (Двоичное разбиение пространства)[en]

ps В русской Wiki примеры походу одинэснег писал  ;D
Цитировать
Процедура ОбойтиУзел(Узел)
  Если Узел <> ПустойУказатель
    Если ВекторыСонаправлены(ВекторНаблюдения, Узел.НормальРазбивающейПлоскости)
      Если СкалярноеПроизведение(ТочкаНаблюдения, Узел.НормальРазбивающейПлоскости) >= 0
        // Плоскость находится сзади наблюдателя, наблюдатель видит только фронтальное поддерево
        ОбойтиУзел(Узел.ФронтальноеПоддерево);
      Иначе
        // Плоскость находится спереди наблюдателя,
        // фронтальное поддерево находится дальше оборотного
        ОбойтиУзел(Узел.ФронтальноеПоддерево);
        ДобавитьПолигонВСписокОтображения(Узел.Полигон);
        ОбойтиУзел(Узел.ОборотноеПоддерево);
      КонецЕсли;
    Иначе
      Если СкалярноеПроизведение(ТочкаНаблюдения, Узел.НормальРазбивающейПлоскости) >= 0
        // Плоскость находится спереди наблюдателя,
        // оборотное поддерево находится дальше фронтального
        ОбойтиУзел(Узел.ОборотноеПоддерево);
        ДобавитьПолигонВСписокОтображения(Узел.Полигон);
        ОбойтиУзел(Узел.ФронтальноеПоддерево);
      Иначе
        // Плоскость находится сзади наблюдателя, наблюдатель видит только оборотное поддерево
        ОбойтиУзел(Узел.ОборотноеПоддерево);
      КонецЕсли;
    КонецЕсли;
  КонецЕсли;
Конец;