• Какой из вентиляторов начинает гудеть?

    MrGobus
    @MrGobus
    Иван
    Блок питания, в 99% случаев, потом видео, потом процессор.
    Ответ написан
  • Как сделать автоматическую прокрутку слайдов в JS?

    MrGobus
    @MrGobus
    Иван
    position контейнера слайдов делаем absolute или relative
    overflow контейнера делаем hidden, чтобы слайд не вылезал за пределы

    position слайда делаем absolute

    Теперь slide.style.left и slide.style.top координаты в контейнере и дальше позиционируем его куда хотим, в случае слайда двигаем в нужную сторону пока не выйдет за границы области.

    Для анимации используем setInetrval или requestAnimationFrame
    Ответ написан
  • Как на WebGL сделать отображение точек с информацией на 3D модели?

    MrGobus
    @MrGobus
    Иван
    Схема примерно такая

    Часть первая : Определение координат точки.
    Raycasting (пересечение луча и модели) - позволяет найти ближайшую (иногда все) точки модели где луч ее пересек. Перебирает грани модели (обычно треугольники) и по сути сводится к задаче по пересечению луча и треугольника ноги которой растут к пересечению с плоскостью.
    Математика вопроса описана тут: www.ray-tracing.ru

    Обычно луч выпускается по клику мыши координаты которой браузер отдает относительно window (нам кстати надо относительно канвы, хе хе хе). Затем координаты клика переводим из пикселей в относительные (от -1 до 1), получаем 3D вектор добавив 1 по оси z, затем умножаем на инверсию произведения матриц проекции и камеры благодаря чему получаем вектор направления в мировых координатах и уже из него делаем raycating.

    Не забываем что координаты зачастую получаем в мировых координатах и их желательно перевести в локальные хотя задачи бывают разные.

    Часть вторая : Получение координат точки на канве (экране)
    Для модели контрольные точки должны быть заданны в так называемых локальных координатах, то есть относительно модели. Для перевода их в экранные нужно провести следующий порядок вычислений.

    матрица проекции * матрица трансформации модели * координаты точки

    В некоторых зачах порядок матриц может меняться, например может быть добавлена матрица камеры, анимации и еще какие то преобразования. Кстати в разнообразных движках (например three.js) для подобных вычислений имеются уже готовые средства (но тут документация вам в помощь)

    В результате получим координаты от -1 до 1 и все что останется это понять где они на канве
    (v * 0.5 + 0.5) * canvaSize

    если непонятно то имеется в виду
    (v.x * 0.5 + 0.5) * c.width
    (v.y * 0.5 + 0.5) * c.height

    Теперь когда есть координаты все что осталось это нарисовать там что вам нужно и все =)
    Ответ написан
    Комментировать
  • Как работать с 2D-графикой?

    MrGobus
    @MrGobus
    Иван
    Судя по запросу вы на старте =) мой совет - Wikipedia
    Ищите по словам pixel, sprite, растр, вектор, opengl, png, jpeg
    Ответ написан
    Комментировать
  • Почему у меня OpenGL работает некорректно или вообще не работает?

    MrGobus
    @MrGobus
    Иван
    При создании окна вы указываете GLUT_DOUBLE, что означает что будет включен режим двойной буферизации, то есть картинка рисуется в памяти машины а потом выводится на экран с целью избежать мерцания и видимой прорисовки. Для того, чтобы изображение появилось на экране при завершении построения кадра нужно вызывать функцию смены кадра, в случае с глут это вроде была glutSwapBuffers.
    В вашем примере это после glFlush();
    Ответ написан
    Комментировать
  • Freeglut, считывание с клавиатуры и мыши

    MrGobus
    @MrGobus
    Иван
    Сначала создать окно потом цеплять фции, иначе вы цепляете их к ничему =)
    Ответ написан
    Комментировать
  • Простой 3D редактор окружения типа minecraft?

    MrGobus
    @MrGobus
    Иван
    блендер, там нет ничего особо сложного, более того есть приятный питон (скрипты), а редакторы игр сразу не подойдут, у них своя спецфика.
    Ответ написан
    Комментировать
  • Как познать C++?

    MrGobus
    @MrGobus
    Иван
    В будущем (4-5 лет) я хочу стать программистом (C# или Java)
    и зачем тебе тогда C++ ???

    Вообще как показывает опыт все решает практика и опыт, нет возможности взять вот так и научится прочитав книжку например. Надо писать писать и еще раз писать, и вот в определенный момент ты узришь свет истинны, для тебя станут логичными классы stl, а код вроде int x = flag?10:25; станет для тебя детским лепетом =)
    Ответ написан
    Комментировать
  • Вопрос специалистам по GCC и темплейтам C++

    MrGobus
    @MrGobus
    Иван
    Обычно ошибка в любом темплейте вызывает множество ошибок компиляции, так как одна моментально начинает приводить к новой новой и новой, разгребайте сверху вниз и вы будуте приятно удивленны как число ошибок начнет сокращаться в тойже прогрессии как они и образовались.
    Далее голый g++ обычно ненастроен на обработек исключений ошибок и делает по своему умолчанию, таже визальная студия или code blocks при компиляции подставляют разные ключи проверки ошибок вроде -Wall и т.п. Так вот, g++
    Ответ написан
  • Стоит ли учить OpenGL 1?

    MrGobus
    @MrGobus
    Иван
    Да стоит.
    OpenGL делится на 2 ветки CORE PROFILE и COMPATIBILITY PROFILE

    CORE ввели в версии OpenGL 3 и выше и позволяет добиться большей производительности за счет использования шейдеров, но все, освещение, текстурированные и многое другое вам придется делать самому организуя связь между вашей программой и шейдером. Тудаже придется добавить знание GLSL (язык на котором пишут шейдер). Также напомню, что не все железо поддерживает этот модный профиль.

    COMPATIBILITY профиль существует потому, что OpenGL это индустриальный стандарт и обратно совместим со всеми предыдущими версиями. Вы может легко создавать 3д сцены без глубокого знания математики 3D.

    Итого, если вы решили прикоснутся к 3Д для понимания или строить простенькие графики, крутить модельки и т.п. COMPATIBILITY PROFILE для вас.

    Если же есть желание «наклонить линейку», вы легко воспринимаете матрицы (как умножать и оперировать), можете рассчитать освещение вершины или текселя по фонгу или еще как то вам в CORE PROFILE.
    Ответ написан
    Комментировать
  • Как сделать людей более социально открытыми, когда им это не особенно нужно (например, при покупке китайского планшета) ?

    MrGobus
    @MrGobus
    Иван
    1. Непонятно зачем китайцам планшет с русскими лицами, тем более топовый
    2. Вы предлагаете не стать открытым социально, а стать обложкой, лицом компании и при этом отвалить бабла за это купив этот товар, не каждый на такое пойдет (к примеру, готовы ли вы стать социально открытым и разместить свою фотографию на упаковке гигиенических прокладок???). Вот еслибы китайцы склепали некий эксклюзивный планшет для именно вашего сообщества тогда да, думаю процент был бы больше.
    3. Не все люди прекрасны, многие так думают и ошибаются, а некоторые и правда не ахти =)
    Ответ написан
  • Вы заменили рабочую тетрадь на планшет? Если да\нет, то почему?

    MrGobus
    @MrGobus
    Иван
    Нет.

    1. Отсутствие рукописного ввода (на большинстве)
    2. Вес
    3. Аккумулятор
    Ответ написан
    Комментировать
  • Какие языки программирования преподавать?

    MrGobus
    @MrGobus
    Иван
    c/c++, java (всем)
    ide — eclipse в обоих случаях, ничего особого они не напишут
    Ответ написан
    Комментировать
  • Периодически глючат USB

    MrGobus
    @MrGobus
    Иван
    Если есть гарантия то обмен, тут я полностью согласен с 1099511627776
    Также отмечу, что возможно юсб нехватает мощности питания, например у меня телефон заряжается если ткнуть его в комп но отказывается если ткнуть его в хаб на 4 устройства. Мобильник, лежа около компа может свободно создавать помехи, особенно во время инициализации или звонка (те самые тыг тыг тыг в колонках)
    Ответ написан