如何旋转然后朝那个方向移动?

2024-01-08

嘿,我目前正在尝试制作第一人称游戏。我能做的是使用函数 gluLookAt() 使相机移动,并使用 glRotatef() 旋转它。我想做的是旋转相机然后沿着我旋转的方向向前移动,但轴保持不变,尽管我旋转了相机,但相机侧向移动而不是向前移动。有人能帮我吗 ?这是我的代码:

glMatrixMode(GL_MODELVIEW);   
glLoadIdentity();   
glRotatef(cameraPhi,1,0,0);   
glRotatef(cameraTheta,0,1,0);
gluLookAt(move_camera.x,move_camera.y,move_camera.z,move_camera.x,move_camera.y,move_camera.z-10,0,1,0);
drawSkybox2d(treeTexture);

这需要一些向量数学......

有了这些功能,操作就非常简单了:

vec rotx(vec v, double a)
{
    return vec(v.x, v.y*cos(a) - v.z*sin(a), v.y*sin(a) + v.z*cos(a));
}

vec roty(vec v, double a)
{
    return vec(v.x*cos(a) + v.z*sin(a), v.y, -v.x*sin(a) + v.z*cos(a));
}

vec rotz(vec v, double a)
{
    return vec(v.x*cos(a) - v.y*sin(a), v.x*sin(a) + v.y*cos(a), v.z);
}

假设您有一个方向向量定义为 {CameraPhi, CameraTheta, 0.0},那么如果您想沿相对于相机轴的向量 v 的方向移动相机,请将其添加到相机的位置 p:

p += v.x*roty(rotx(vec(1.0, 0.0, 0.0), CameraPhi), CameraTheta) +
     v.y*roty(rotx(vec(0.0, 1.0, 0.0), CameraPhi), CameraTheta) +
     v.z*roty(rotx(vec(0.0, 0.0, 1.0), CameraPhi), CameraTheta);

这应该可以做到。 继续编码:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何旋转然后朝那个方向移动? 的相关文章

随机推荐

  • 类库和框架有什么区别

    我整天听到术语 类库 基类库 框架 框架的亮点是什么 基类库又是什么 类库和软件框架之间的区别特征是 在框架中 控制流不是由用户的代码决定的 而是由框架决定的 这也被称为好莱坞原则 不要给我们打电话 我们给您打电话 顺便说一下 还有一个不错
  • 如何使用 PowerShell 将文件移至回收站?

    当使用rm在Powershell中使用命令删除文件 它们将被永久删除 相反 我希望将已删除的项目放入回收站 就像通过 UI 删除文件时发生的情况一样 如何在 PowerShell 中执行此操作 2017年答案 使用回收模块 https ww
  • 在 Php PDO 的 bindValue 中使用 $id 之前是否需要使用 (int)$id

    我刚刚开始使用 Php 数据对象 我不确定的一件事是我是否必须在查询中使用某些变量之前验证它是否是整数 例如 像这样 id int POST id is this required query pdo gt prepare SELECT F
  • 如何连接到远程 hashcorpVault 服务器

    让我在这里解释一下我的用例 我想尝试在本地进行保管 所以我配置了VAULT ADDR as echo VAULT ADDR http 127 0 0 1 8200 然后我在开发模式下启动了vault vault server dev 一切正
  • Django Rest 框架中的 Post 请求处理

    我正在使用 Django Rest Framework 当前使用 Get 请求从后端提取一些数据 但由于 URL 限制变高 我们计划实现 Post 请求 为此 首先必须使后端 Django Rest API 能够服务于 post 请求 我是
  • 我如何知道应用内购买收据是否来自沙盒?

    iOS IAP 文档states https developer apple com library ios documentation NetworkingInternet Conceptual StoreKitGuide Develop
  • 如何操纵 MySQL 全文搜索相关性以使一个字段比另一个字段更“有价值”?

    假设我有两列 关键字和内容 我对两者都有全文索引 我希望关键字中包含 foo 的行比内容中包含 foo 的行具有更高的相关性 我需要做什么才能使MySQL对关键字匹配的权重高于内容匹配的权重 我正在使用 匹配 语法 解决方案 能够通过以下方
  • 替换 Spark 数据框中列名的特殊字符

    我有我的意见spark dataframe named df as Main CustomerID 126 Concentrate 2 5 Ethylhexyl Acrylate 725153 3 0 2 0 873008 4 0 1 0
  • SSAS 计算成员聚合问题

    我有一个非常简单的计算成员 CREATE MEMBER CURRENTCUBE Account Account Parent amp NA 1 Beginning Subscribers AS Account Account Parent
  • 错误表达式:在打字稿中传递给“ts.resolveTypeReferenceDirective”的非字符串值

    当我尝试运行 ts node dev index ts 时 出现以下错误 我更新了我的打字稿和 ts node dev ts node 但如果我删除具有 types 的依赖项 此错误会继续弹出 XXXX 例如 types express 它
  • 如何配置 ASP.NET MVC 路由以隐藏“主页”页面上的控制器名称?

    从这个问题继续 使用默认控制器的 ASP NET MVC 路由 https stackoverflow com questions 1713379 asp net mvc routing with default controller 我有
  • scipy,对数正态分布 - 参数

    我想使用 python 将对数正态分布拟合到我的数据scipy stats lognormal fit 根据manual http docs scipy org doc scipy 0 7 x reference generated sci
  • Angular JS 触摸和滑动

    我对 Angular JS 非常陌生 并且正在开发移动应用程序 作为其中的一部分 我需要编写一个服务来处理触摸事件 例如向左滑动 向右滑动 向上滑动和向下滑动 并且我需要根据执行的操作进行回调 如果有任何有用的教程请告诉我 正如评论中提到的
  • Firefox AJAX POST w/ FormData 永远不会完成

    我正在通过 AJAX 和 FormData 上传文件作为输入文件控件更改事件的一部分 form 变量是对我的表单的 jQuery 引用 如果这不明显的话 ajax url contentType false data new FormDat
  • 在表视图单元格内设置集合视图约束的正确方法

    我想知道对此设置限制的正确方法 我在表视图单元格内有一个集合视图 作为在用户发布的图像之间滑动的一种方式 每个帖子 表格视图单元格 可以包含多个图像 每个图像都发布在集合视图中 我想要一种与 Instagram 类似的风格 你可以在图像之间
  • 在锁定屏幕上设置和访问 iOS 搜索栏

    我正在使用 AVQueuePlayer AVFoundation 在 iOS 应用程序中播放音频文件 我已经设置了 MPNowPlayingInfoCenter 的当前播放信息 例如专辑标题 艺术家 艺术品 像这样 NSMutableDic
  • PHP:如何创建编码为“UTF-8 without BOM”的文件

    我猜 大多数人都知道我们有以下文件编码 ANSI UTF 8 UTF 8 是通过在文件开头添加三个字符来识别的 但正如您所知 这些字符会在 PHP 语言中引起一些麻烦 所以我们使用 无 BOM 的 UTF 8 而不是 UTF 8 这是我的问
  • 使用 ThreadPoolExecutor 缩放 maxPoolSize;为什么池不动态增加其大小?

    作为初学者 我正在学习 java 中的线程和并发包 并且我已经阅读了有关 ThreadPoolExecutor 的文档来了解两者之间的差异getPoolSize getCorePoolSize getMaxPoolSize 并尝试在代码中实
  • 如何从变量中删除小数?

    如何在 shell 脚本中删除小数位 我将 MB 与字节相乘以获得以字节为单位的值 我需要删除小数位 ex 196 3 1024 1024 205835468 8 expected output 205835468 您没有提到您正在使用什么
  • 如何旋转然后朝那个方向移动?

    嘿 我目前正在尝试制作第一人称游戏 我能做的是使用函数 gluLookAt 使相机移动 并使用 glRotatef 旋转它 我想做的是旋转相机然后沿着我旋转的方向向前移动 但轴保持不变 尽管我旋转了相机 但相机侧向移动而不是向前移动 有人能