Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 11:54   #1
Hexy
 
Аватар для Hexy
 
Регистрация: 13.06.2011
Сообщений: 9
По умолчанию Немного тригонометрии

Код:
private void SetupCamera()
        {
            float camx = x - (float)(Math.Sin(offx) * 0.1);
            float camy = y - (float)(Math.Sin(offy) * 0.1);
            device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, this.Width / this.Height, 1.0f, 1000.0f);
            viewX += (Cursor.Position.X - centerX) / 300.0f;
            viewY -= (Cursor.Position.Y - centerY) / 300.0f;

            Cursor.Position = new Point(centerX, centerY);
            device.Transform.View = Matrix.LookAtLH(new Vector3(camx, camy, z), new Vector3(/*0, 0, 0,*/(float)Math.Sin(viewX) + camx, (float)Math.Sin(viewY) + camy, (float)Math.Cos(viewX) + z), new Vector3(0, 1, 0));

            //x = (float)Math.Sin(LookAtAngle);
            //y = (float)Math.Sin(LookAtUpAngle);
            //z = (float)Math.Cos(LookAtAngle);
        }
не знаю знаком ли кто с directx9, но эта функция реализует взгляд камеры внутри 3д пространства, создаваемого directx.
Matrix.LookAtLH(new Vector3(camx, camy, z), new Vector3(/*0, 0, 0,*/(float)Math.Sin(viewX) + camx, (float)Math.Sin(viewY) + camy, (float)Math.Cos(viewX) + z), new Vector3(0, 1, 0));
new Vector3(camx, camy, z) - позиция камеры, camx и camy - сочетают позицию игрока(x, y) и тряску камеры при ходьбе.
new Vector3((float)Math.Sin(viewX) + camx, (float)Math.Sin(viewY) + camy, (float)Math.Cos(viewX) + z)
собственно цель взгляда камеры, мы смотрим из положения камеры в эту точку, и видимо я ошибся в расчётах, ибо в игре когда пытаешь смотреть строго вниз/вверх, где-то за 25 градусов камера упирается, а потом управление инвертируется.
new Vector3(0, 1, 0)
это всё ок, это вектор, показывающий где верх.

надеюсь на помощь, с уважением Hexing.
если есть вопросы, пишите.
само приложение(.net f/w 3.5)
Hexy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Немного о защите kettanaito Свободное общение 3 03.09.2011 18:22
Создание узоров с помощю тригонометрии. Iceman Паскаль, Turbo Pascal, PascalABC.NET 1 01.04.2009 00:17
Помогите решить пример по тригонометрии !! blackstersl Свободное общение 11 25.01.2009 23:06
Немного математики Socol Помощь студентам 3 18.02.2007 02:01