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

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

18.12.2023, 10:49. Показов 5106. Ответов 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
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
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
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
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
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
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
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru