Jump to content


Photo

Программистов трэд


  • Please log in to reply
482 replies to this topic

#181 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 18.09.2012 - 14:04

Тогда вопрос:Есть main.cpp CBLoader.cpp CBLoader.hВ CBLoader.h создан класс.Он получается определяется сразу в двух файлах, т.к. они включают в себя CBLoader.h.Как можно сделать что бы эти cpp файлы были независимыми друг от друга?

#182 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 18.09.2012 - 17:36

Есть такая штука как Include guard. Она позволяет защитить участок кода от повторного определения при подключении файлов и возникновения таких ошибок. Реализуется так:
#if !defined(HEADERNAME)#define HEADERNAME	//Здесь содержимое, которое необходимо защитить#endif
Есть еще другой, нестандартный способ. Директива #pragma once. Пример:
#pragma once//Содержимое файла
Второй вариант предпочтительней, ибо быстрее, компактнее, и не возникает проблем с возможной коллизией имен. Однако он может не везде работать. Есть мнение, что таки неплохо использовать их в комбинированном варианте, но имхо это превращает код в тыкву.

Для форумчан можно просто Олег.

Скрытый текст

#183 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 20.09.2012 - 10:19

А если:CBLoader.h не включать в main.cpp,И написать в CBLoader.hextern int i=15;А потом в main.cpp написать int i;То значение передастся?

#184 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 20.09.2012 - 20:35

Нет. Файл, который нигде не включен, по факту вообще отсутствует в проекте. Словно его нет.Для понимания сути подключаемых файлов: ты можешь просто скопировать все из someheader.h, и заменить его содержимым строку " #include "someheader.h" ". Будет то же самое.

Для форумчан можно просто Олег.

Скрытый текст

#185 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 07.10.2012 - 17:05

Можете посоветовать простую физическую библиотеку для C++? (MSVS C++ 2005, OpenGL)

#186 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 08.10.2012 - 08:26

Что за физическую библиотеку?

Для форумчан можно просто Олег.

Скрытый текст

#187 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 08.10.2012 - 14:13

Ну физический движок.(Tokamak, bullet и т.д.)С Bulletom я не разобрался, а Tokamak мне не очень нравится.

#188 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 08.10.2012 - 15:12

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

Для форумчан можно просто Олег.

Скрытый текст

#189 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 25.10.2012 - 21:13

Появилась очень большая проблема.
Скрытый текст
Если то, что я написал выше - сумашествие, то вот пример.
Скрытый текст


#190 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 25.10.2012 - 21:22

Направление не нужно узнавать, оно известно изначально.Либо в виде вектора, либо в виде комбинации углов, либо кватернионом.

Для форумчан можно просто Олег.

Скрытый текст

#191 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 25.10.2012 - 21:26

А можно подробнее ?Т.е. как задать это направление?Я хочу сделать так:Я смотрю куда то, и нажимаю какую либо кнопку. Создается объект, в направлении камеры.

#192 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 25.10.2012 - 21:32

Мы изначально храним направление взгляда любым из перечисленных способов. При повороте меняем мы именно его.А уже при рендеринге делаем поворот камеры.Что именно подразумевается под созданием объекта в направлении камеры?

Для форумчан можно просто Олег.

Скрытый текст

#193 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 25.10.2012 - 21:50

Куда смотрит камера, там надо создать объект.Т.е. если бы камера полетела прямо.Смотрит вверх - полетела вверх. У меня получилось сделать только в двухмерных координатах(синус и косинус), а в трехмерных не знаю как.Например в майнкрафте, при стрельбе из лука стрела летит не в случайном направлении, а в направлении которое задалось на основе градусов направления камеры.Как это сделать?

#194 wormouse

wormouse

    Добытчик железа

  • Пользователи
  • Active Posts496

Posted 25.10.2012 - 22:16

Скрытый текст


#195 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 25.10.2012 - 23:09

при стрельбе из лука стрела летит не в случайном направлении, а в направлении которое задалось на основе градусов направления камеры.

Для данного примера все просто. Допустим, мы храним направление взгляда игрока в углах. 1) По вышеуказанной формуле получаем единичный вектор направления (длина равна единице). 2) Создаем объект "стрела". Координаты ему присваиваем от игрока, в скорость ему ставим найденный выше вектор * "начальная скорость стрелы". 3) Теперь на каждом шаге нужно прибавлять к координатам стрелы вектор его скорости (x к x, y к y, z к z). Для имитации стрелы мы постепенно должны уменьшать ее скорость (просто умножаем вектор скорости на 0.95, например), для гравитации прибавляем ускорение свободного падения к компоненте-высоте вектора скорости (Z или Y, в зависимости от того, как хранишь). 4) А вот для отрисовки модели стрелы по идее придется приводить вектор обратно к углам. Давно уже не занимался графикой, но вроде стандартной возможности повернуть по вектору нет.

Для форумчан можно просто Олег.

Скрытый текст

#196 Kapitan Kep

Kapitan Kep

    Добытчик алмазов

  • Пользователи
  • Active Posts888
  • Откуда: Луганск

Posted 30.10.2012 - 20:38

Вопрос наверное задавался 100 раз,но не подскажете ли хорошую книгу по с++ или видео гайд.Я знаю базовые понятия, написание простейших задач и т.п.
Скрытый текст

Изображение

#197 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 30.10.2012 - 21:28

Страуструп хорош, но только если читатель уже имеет хороший опыт, и понимает терминологию.Советую учиться самостоятельно, по статьям в интернете. Так быстрее приходишь к пониманию, ибо самому нужно формулировать, что именно нужно искать.А вообще, ничего не заменит хорошего учителя. Даже не приблизительно.

Для форумчан можно просто Олег.

Скрытый текст

#198 Kapitan Kep

Kapitan Kep

    Добытчик алмазов

  • Пользователи
  • Active Posts888
  • Откуда: Луганск

Posted 30.10.2012 - 21:32

Советую учиться самостоятельно, по статьям в интернете. Так быстрее приходишь к пониманию, ибо самому нужно формулировать, что именно нужно искать.

Спасибо.
Скрытый текст

Изображение

#199 Nomadd

Nomadd

    Добытчик алмазов

  • Пользователи
  • Active Posts578

Posted 01.11.2012 - 12:10

Можете подсказать алгоритм по проверке столкновения сферы и полигона.Или сферы и куба\параллелепипеда.

#200 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Active Posts9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Posted 01.11.2012 - 13:25

Если нужен только факт столкновения и больше ничего:Сферы и полигона:Проверяем расстояние от центра сферы до ближайшей точки на треугольнике. Если оно меньше радиуса сферы - столкновение есть.Сферы и параллелепипеда:Просто проверяем несколько раз как сферу с полигоном.Для оптимизации перед столкновением с высоко-полигональной моделью предварительно проверяй пересечение с ограничивающим объемом. Это просто область, в которую гарантировано попадает вся модель.Обычно она делается в форме сферы (BSphere) или параллелепипеда (BBox). При этом фигура обычно не поворачивается вслед за моделью (AABB), что значительно упрощает вычисление.

Для форумчан можно просто Олег.

Скрытый текст


4 user(s) are reading this topic

0 members, 4 guests, 0 anonymous users