第一范文网 - 专业文章范例文档资料分享平台

OpenGL ES教程十二

来源:用户分享 时间:2025/7/5 19:50:18 本文由杩芥ⅵ 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

我们可以很容易的得到红色点的坐标.

我们先设计目标位置的相对坐标 deltaX 和 deltaZ:

deltaX = 1.5 - 1.0 = 0.5 deltaZ = -10 - (- 5.0) = -5.0

所以现在乘上我们的步行速度:

xDisplacement = deltaX * WALK_SPEED = 0.5 * 0.01 = 0.005

zDisplacement = deltaZ * WALK_SPEED = -5.0 * 0.01 = 0.05

因此,那个红色的新点位置就是: eyeC + CDisplacement

(eyex + xDisplacement, eyey, eyez + zDisplacement) = (0.005+1.0, eyey,(-10)+ 0.05) = (1.005, eyey, -9.95)

现在,这种方法不是没有缺点。主要的问题是,如果目标与当前位置距离越远,那么“步行速度”也就越快。

现在,让我们看下转左和转右。

因为我们在模拟旋转。实际上目标位置就是在一个圆上移动。

这里的关键在于,你要明白我说的是什么。你可以把当前所在位置想像为圆心,目标位置是圆边。转向就是在圆边上移动。

换句话说,这就是:

newX = eyeX + radius * cos(TURN_SPEED)*deltaX - sin(TURN_SPEED)*deltaZ

newZ = eyeZ + radius * sin(TURN_SPEED)* deltaX +

cos(TURN_SPEED)*deltaZ

处理触摸及涉及到运动

现在,让我们把这个转化为实践。

首先,实现开始的方法和一些基本知识:

- (void)handleTouches {

if (currentMovement == MTNone) {

// We're going nowhere, nothing to do here return; }

首先,看看我们是不是在移动,如果没有操作,就什么事情也不做。

然后,无论我们是在移动还是转弯,我们都需要知道相对距离 deltaX 和 deltaZ 的值。我找一个临时数组把我们保存起来。

GLfloat vector[3];

vector[0] = center[0] - eye[0]; vector[1] = center[1] - eye[1]; vector[2] = center[2] - eye[2];

搜索更多关于: OpenGL ES教程十二 的文档
OpenGL ES教程十二.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8atbl1vx4x03ypi6btga_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top