Перейти к содержимому


Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 482

#181 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 18.09.2012 - 14:04

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

#182 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 18.09.2012 - 17:36

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

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

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

#183 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 20.09.2012 - 10:19

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

#184 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 20.09.2012 - 20:35

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

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

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

#185 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 07.10.2012 - 17:05

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

#186 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 08.10.2012 - 08:26

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

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

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

#187 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 08.10.2012 - 14:13

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

#188 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 08.10.2012 - 15:12

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

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

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

#189 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 25.10.2012 - 21:13

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


#190 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 25.10.2012 - 21:22

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

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

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

#191 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 25.10.2012 - 21:26

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

#192 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 25.10.2012 - 21:32

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

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

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

#193 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 25.10.2012 - 21:50

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

#194 wormouse

wormouse

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

  • Пользователи
  • Сообщений: 496

Написал 25.10.2012 - 22:16

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


#195 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 25.10.2012 - 23:09

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

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

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

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

#196 Kapitan Kep

Kapitan Kep

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

  • Пользователи
  • Сообщений: 888
  • Откуда: Луганск

Написал 30.10.2012 - 20:38

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

Изображение

#197 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 30.10.2012 - 21:28

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

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

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

#198 Kapitan Kep

Kapitan Kep

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

  • Пользователи
  • Сообщений: 888
  • Откуда: Луганск

Написал 30.10.2012 - 21:32

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

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

Изображение

#199 Nomadd

Nomadd

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

  • Пользователи
  • Сообщений: 578

Написал 01.11.2012 - 12:10

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

#200 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 01.11.2012 - 13:25

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

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

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


Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных