Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Ойлтибр викликаний гарячкою, не інакше

with 6 comments

Позавчорашній 5-годинний спринт таки дав свої результати. Було дуже весело. Я написав щось на зразок двовимірного Minecraft:



Двовимірний, бо навіть для нього на великих розмірах поля Python починає приторможувати. І це при тому, що я використовував дисплейні списки для кубиків. Може це тому, що перед малюванням кожного кубика я роблю glPushMatrix()? Цікаво, а бувають дисплейні списки з параметрами?

Ну, основний результат – це я читав, і читав про різні варіанти камер на кватерніонах, поки не зрозумів що це поки що вище мого розуміння, і краще робити все просто. Можливо мене на це надихнув туторіал по кватерніонній камері від NeHe, в якому писало що їх можна зрозуміти лише коли перестати намагатись зрозуміти, і почати використовувати. А ще, код до того туторіалу не хотів компілюватись, але я таки поправив мейкфайли (перед цим виявив що Glut в мене вже стоїть, а я поставив якусь альтернативну реалізацію). Але його проблема була не в тому. А в тому, що в програмі що вийшла в результаті управління камерою було страшенно незручним. Тому я й вирішив забити на кватерніони, і робити все просто, без ніяких кренів камери. gluLookAt, і тільки координати, азимут, і висота.

І взагалі, я планував написати про камеру, продовживши таким чином створення своєї книжки. Але чомусь пробрала страшна лінь, тому замість того щоб писати про код пишіть код (с) мене поперло писати про те, як я пишу код. Загалом про це можна розповісти однією фразою: “Я пишу код гірше ніж більшість інших людей”. Точніше тих людей, які люблять писати код. Точніше, я пишу код гірше ніж меншість тих людей які пишуть код краще. Але це мене, на відміну від Данила, вже майже не гребе.

Ах. Сам об’єкт нашої розповіді знаходиться тут. (Купи посилань на вікіпедію в мене вже давня звичка. А останнім часом майже в кожному пості посилання на репозиторії. Напевне це гарний знак).

Клас камери, окрім того, що вміє правильно рухатись в просторі, і викликати gluLookAt, ще вміє визначати чи перетинає промінь, проведений від камери в напрямку в якому вона дивиться, даний кубик. (На малюнку останні позначені зеленим, і трохи припідняті над рештою). Червоний кубик – курсор, позначає місце на сітці (площині XOZ), яке перетинається вищезгаданим променем і куди будуть додавати чи видаляти кубик.

Але це я пишу про код, а не про те як я його писав. В понеділок я його писав великим ривком, про це вже казав. Перед цим ще зробив собі дику зачіску, яка робить мене на 5 сантиметрів вищим ніж зазвичай. Робиться за допомогою миття голови, і наступного надягання на неї (поки ще мокра) шапки, зробивши поворот шапки навколо осі що виходить з правого вуха за годинниковою стрілкою. Зачіска виходить весела, і зберігається майже в незмінному виді до наступного миття голови.

А в вівторок – я писав код на МЕЕП (shame on me), і в поліклініці, і зробив взаємодії з кубиками. Коли просив карточку на вході, відбувся такий діалог:
– Добрий день. Я кашляю. 🙂
– Факультет, курс, прізвище. А чому ви так радісно про це кажете?

Далі, я десь від 14 з чимось до 17 з чимось був в поліклініці. Там я теж сів покодити, і через це мене абсолютно не бісила черга. Добрі лікарки акуратно переступали провід, який тягнувся від резетки на протилежній стіні, до моєї лавочки, і ніхто на мене навіть не кричав.

Потім прийшла моя черга, в мене забрали карточку, і послали назад в коридор міряти температуру, хоча я активно пояснював що я кашляю, а температури не маю. Пізніше виявилось що маю.

Поки міряв температуру вирішив ще покодити. До мене прийшла ідея, як зробити лабораторну справді цікавою. Тетраедралізація – корисна штука:

  1. Берем меш.
  2. Випадковим чином наповнюємо його внутрішність точками. (Перевірка на належність точки мешу – досить проста, треба лишень порахувати кількість перетинів мешу довільним променем що виходить з точки. Має бути непарним.).
  3. Будуємо тетраедралізацію. (Оце вже справжній головний біль, тут навіть google слабо допомагає.)
  4. Випадковим чином об’єднуємо суміжні тетраедри в певну кількість груп.
  5. І кожній з цих груп надаємо початкової швидкості в напрямку від центру мас меша, до центру мас групи (одним словом геть), і випадкового обертового моменту. Бум!
  6. Рендеримо це все з пафосним кружлянням камери навколо місця події. Отримуємо профіт (залік) і, що найголовніше, фан.

А поки я з серйозним видом кодив, збоку сиділа дівчина Таня з другого курсу економічного факультету. Виявляється на економічному факультеті філософію вчать на першому курсі. І це чудово, бо тоді вивчення етики на другому курсі має більше сенсу. Принаймі етика вже вкладається в певну структуру. Ну, Арістотель же!

Але найкраще, це те, що я сказав:
– Сиджу тут, бо кашель трохи заважає бігати.
– О, і в мене аналогічно.

І виявилось, що вона бігає кожен день. І в мене є номер телефону. Неймовірно, правда? В мене! Колись я напишу статтю “Пікап для чайників”, приблизно такого вмісту:

  1. Візміть ноутбук.
  2. Поставте Убунту. Пофіг що Генту, чи хоча б Арч крутіше. Недосвідченому оку це не помітно.
  3. Поставте vim
  4. Скачайте мій код. (Посилання було вище). (Хоча, можливо краще використати щось крутіше, наприклад battle city, чи сорси Quake (вони теж десь є).)
  5. Протюнінгуйте свій vim.
  6. Знайдіть місце з високою концентрацією цільової аудиторії.
  7. Відкрийте код, і задумливо в ньому колупайтесь, час від часу переходячи до зневадження.

А якщо серйозно, то в мене справді з’являється ідея комунікації (під враженням від ідей Павліни, хоча мені й не все в ньому подобається), яку коротко можна описати словами: “Найгірше що ви можете зробити спілкуючись з кимось – це добитись того ця людина більше ніколи не захоче з вами говорити. А це просто повернення до ситуації яка була до знайомства. Тому результати завжди будуть лише позитивними.”

І назад до детального сюжету щоденника. Лікарі виписали мені лікарств загалом на 50 грн. Добре що аптекарша змогла цей список розпізнати. Сьогодні щосили намагаюсь виздоровіти, на пари забив (ох, семестр знову йде не так як планувалось). Як виявилось в інструкції до лікарств, я деякі з них навіть трохи передозував.

Завтра знову йду в поліклініку. І Таня теж йде. Добре що Олександр (з яким я навіть, на жаль, не навіть не розанонімізувався, хоча варто було б), сказав мені щоб я йшов лікуватись.

Ну, і якщо завтра все буде добре, то я скоро почну бігати, і мати чудову відмазку чому я не хочу йти грати в футбол. 🙂 Всім до завтра!

Advertisements

Written by bunyk

Квітень 14, 2011 at 00:09

Оприлюднено в Нещоденник

Tagged with , , ,

Відповідей: 6

Subscribe to comments with RSS.

  1. Якщо є бажання розвіртуалитись, на ВДНГ цього семестру буваю з вівторка по п’ятницю, тому досить лише вточнити місце й час.

    Engraver

    Квітень 14, 2011 at 14:12

    • Фізики по п’ятницям організовували цікаву тусовку “English Speaking Club”, в своїй 404. Останні два тижні правда не чув нічого, але думаю запросто можна обновити. Цікаві люди збираються. Останнього разу навіть дві дівчини з Мінська було, хоч я так і не зміг вияснити що вони там робили.

      bunyk

      Квітень 14, 2011 at 23:08

      • Ніколи там не був й навіть не чув про такий захід. На жаль, в мене лаби з програмування десь до 16-ї завтра в гіршому випадку. Буде час і натхнення, можеш завітати у 1 аудиторію РФФ в комп. зал, домовимось про щось конкретніше у майбутньому, або здзвонимось, якщо в тебе телефон тут вірно вказано 🙂

        Engraver

        Квітень 14, 2011 at 23:33

  2. https://code.google.com/p/bunykprogs/source/browse/craft/main.py?spec=svne2e6a3870b81666bf71e0d158bc97961088cfe45&r=e2e6a3870b81666bf71e0d158bc97961088cfe45

    Баги-баги… Запустилось, проте через деякий час видало

    [danbst@localhost bunyk]$ python2 pyf1.py
    socket(): Address family not supported by protocol
    Traceback (most recent call last):
      File "pyf1.py", line 259, in 
        pause = not pause
    NameError: name 'pause' is not defined
    

    І взагалі, тормозить жахливо і мишка може виходити за межі вікна

    danbst

    Квітень 14, 2011 at 21:14

    • fixed.

      На твому комп’ютері тормозить??? На моєму працює нормально, а на твоєму взагалі має літати!

      bunyk

      Квітень 14, 2011 at 23:03

      • тормозить жахливо, можливо через дрова (хоча, для прикладу, шпілки під вайном йдуть більш-менш нормально).

        А згадав, у мене весь opengl майже не працює. Frets on Fire видає близько 2 FPS, якщо запускаєтсья

        danbst

        Квітень 15, 2011 at 08:22


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: