Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 56

Получить положение камеры

18.12.2023, 10:49. Показов 5244. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите составить формулу. Нужно в игре развернуть камеру таким образом чтобы она смотрела на координаты точки, которые я задам. Есть 2 переменные, которые отвечают за поворот персонажа. Первая переменная float относительно X её значения от -1 до 1. И точно так же переменная Y. Вот допустим персонаж находится на координатах x: 0, y: 0. А повернуть камеру надо чтобы она смотрела на координаты x: 50 y: 50. Надо составить какую то формулу, которая будет определять в какую сторону нужно повернуться, чтобы смотреть на нужные координаты.

Вот для примера координаты персонажа, координаты на которые он смотрит и значение камеры.

Char Coords x:0 y:0
Object Coords x:10 y:0
Camera value x:1 y:0

Char Coords x:0 y:0
Object Coords x:0 y:10
Camera value x:0 y:1

Char Coords x:0 y:0
Object Coords x:-10 y:0
Camera value x:-1 y:0

Char Coords x:0 y:0
Object Coords x:0 y:-10
Camera value x:0 y:-1

Char Coords x:0 y:0
Object Coords x:10 y:10
Camera value x:0.70 y:0.70

Char Coords x:0 y:0
Object Coords x:-10 y:-10
Camera value x:-0.70 y:-0.70

Нужна функция которая будет принимать координаты персонажа и координаты объекта и возвращать правильные переменные для камеры.

C++
1
2
3
4
5
6
7
8
9
10
11
void GetCameraPosition(const float x1, const float y1, const float x2, const float y2, float* CameraBufferX, float* CameraBufferY) 
{
...
}
 
float CameraX;
float CameraY;
 
GetCameraPosition(0, 0, -10, -10, CameraX, CameraY); 
// CameraX = -0.70
// CameraY = -0.70
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2023, 10:49
Ответы с готовыми решениями:

Получить положение курсора (Си)
я знаю что этот код задает положение курсора, но мне нужно ПОЛУЧИТЬ его #include <stdio.h> #include <windows.h> int...

Положение камеры
Добрый день. Это уже тема всплывала на геймдеве, но тем не менее. Пробую получить координаты камеры вот таким способом: Что-то все...

Положение камеры
Времени суток. Пишем движение камеры,и заступорились на одном моменте: задали начальное положение, описали движение...

66
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 56
19.12.2023, 23:37  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
Когда камера смотрела на точку (50, 50) угол равен 0.785398 -> 45°
Когда камера смотрит на точку (50, 20) угол равен 0.380506 -> 21,8°
И теперь подумай, как поворачивать камеру?
Чтобы переместить камеру с (50, 50) до (50, 20) нужно повернуть по часовой стрелке (направо).
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3067 / 1054
Регистрация: 01.06.2021
Сообщений: 11,727
19.12.2023, 23:39
WEewt345, вот, видишь, как хорошо. Сам ответил на свой вопрос.
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 56
19.12.2023, 23:46  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
WEewt345, вот, видишь, как хорошо. Сам ответил на свой вопрос.
А как мне получить угол из двух переменных, которые принимают значения от -1 до 1?
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3067 / 1054
Регистрация: 01.06.2021
Сообщений: 11,727
19.12.2023, 23:55
WEewt345, а что это за переменные? Типа это то, что возвращает твоя функция GetCameraPosition?
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 56
19.12.2023, 23:57  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
WEewt345, а что это за переменные?
Camera value - первый пост в теме
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3067 / 1054
Регистрация: 01.06.2021
Сообщений: 11,727
20.12.2023, 00:01
WEewt345, угол можно получить путем acos(CameraBufferX) или asin(CameraBufferY). Но это лишние операции. Лучше вытащить из функции, он же там вычисляется.
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 56
20.12.2023, 11:59  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
WEewt345, угол можно получить путем acos(CameraBufferX) или asin(CameraBufferY). Но это лишние операции. Лучше вытащить из функции, он же там вычисляется.
CameraBufferX и CameraBufferY сравниваются с CameraValueX и CameraValueY(эти переменные изменяются в результате вращения). Соответственно как мне из этих переменных получить угол, если его вообще надо получать, чтобы вращать правильно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
#include <iostream>
#include <cmath>
 
int Get_the_side_of_Rotation(const float x1, const float y1, const float x2, const float y2)
{
  int TurnLeft = 1;
  int TurnRight = 2;
 
  if(...){
      return TurnLeft;
   }else{
      return TurnRight;
   }
}
 
int main()
{
    float CurrentCameraX; // from -1 to 1
    float CurrentCameraY; // from -1 to 1
    float RightCameraX; // from -1 to 1
    float RightCameraY; // from -1 to 1
 
    GetRightCameraPosition(100.f,100.f,50.f,50.f,&RightCameraX,&RightCameraY); 
    
    GetCurrentCameraPosition(&CurrentCameraX,&CurrentCameraY); // from -1 to 1
 
    if (Get_the_side_of_Rotation(CurrentCameraX, CurrentCameraY, RightCameraX, RightCameraY) == 1) 
          TurnLeft();
    else
          TurnRight();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2023, 11:59

Указать положение камеры в SlimDX 11
Здравствуйте, дорогие форумчане! До этого я работал c DirectX9 на С#, и там все было понятно с установкой положения камеры ...

Положение камеры чтобы влез объект
Всем привет! Как сделать так, чтобы камера перемещалась к объектам разного размера на нужное расстояние?

Рассчитать положение креста в изображении с веб-камеры
Господа прошу помощи. Есть ли есть возможность подсказать прошу. Суть в том что в окне есть изображение с камеры допустим + крест. Нужно...

Изменить положение камеры не меняя фокус - Helix Toolkit 3D
Меняю &lt;PerspectiveCamera x:Name=&quot;MyCamera&quot; Position=&quot;0,0,200&quot; LookDirection=&quot;0,0,-1&quot; /&gt; вместе с камерой меняется и центр вращения. Как...

Приложение крашится если после вызова камеры поменять положение на горизонталь
Добрый день, Вызывается камера для захвата картинки и дальнейшей передачи по сети. Когда снимаю вертикально все работает корректно, когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
67
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru