【Android论文栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Android论文-基于Android的三维物体的触摸控制 - 计算机教材的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
鬟曩基于的三维物体的触摸控制陈建伟同济大学软件学院上海信息科学【擒要平台是手机界的一股新生力量它是完全免费并开源的在上主要使用来进行开发。
因此将探讨在场景中如何实现对三维物体的触摸控制比如如何选中移动旋转等并给出一个比较高效的选中物体的算法和一个简单实用的旋转物体的算法。
以及在此基础上开发一个简单的魔方游戏游戏程序在叩订∞关键词】触摸控制三维选中三维旋转中田分类号文献标识码文章编号盯—∞一们是开发的基于平台的开源手机操作系统。
它包括操作系统、用户界面和应用程序一移动电话工作所需的全部软件而且不存在任何以往阻碍移动产业创新的专有权障碍。
在上主要使用来进行开发。
乱是三维图形的子集针对手机、和游戏主机等嵌入式设备而设计。
中带的是版本它是以规范为基础的。
本文将对场景中物体的触摸控制进行研究并给出实现的算法。
本文所做的论述都是基于一、知何琏中三雏■体并没有像一样提供有选择模式因此需要自己去实现选中物体。
算法思路作一条直线该直线经过屏幕上的触点并且与屏幕垂直求出该直线在世界坐标系中的方程然后再判断该直线与三维物体是否有交点如有交点则选中该物体。
下面以立方体为例不规则的三维物体都可以转化为规则物体来操作来说明一下算法的具体过程。
设为触点的屏幕坐标则得到视点坐标为州记作】冒。
分别给该点配上深度坐标得到两点【。
。
通过转化到世界坐标得到世界坐标系下一条直线的两点一——现在问题就剩如何求直线与立方体的交点了。
立方体一共有六个面建立模型的时候顶点坐标都是己知的因此可以得到立方体每个面的空间方程表示再分别求出每个面与直线的交点。
设平面上点为构造一个平面刀。
再根据两点构造一条直线求出交点再判断该点是否在相交平面的正方形内点到正方形两对边的距离之和如果大于边长则该点在正方形外部如果是说明选中了该物体。
为了提高效率可以先判断立方体都有哪些面朝向屏幕外侧然后再计算这些面与直线的交点就可以了。
方法如下由两点得到一个向量朝向屏幕外侧分别求该向量与立方体各个面的法线方向朝外的夹角如果夹角小于度说明该面朝向屏幕外侧进而判断直线与该面的交点是否落在这个面上。
先求平面朝外的法向量设平面上的三点。
点的顺序要按照右手法则代表向量叉乘再求一和法向量的夹角余弦值如果余弦值大于零小于一说明夹角小于度该面朝向屏幕外侧。
、如何旋转三簟钧体三维空『日】的旋转有三个自由度大家自然会想到使用三个对应于三条坐标轴的角度去记录即这就是我们通常所说的方法。
但是这种方法存在一个万向节死锁的问题。
如何来避免万向节死锁昵实际上数学上有种偏轴角的定义。
先定出两个旋转向量。
然后求出他们之间的最少旋转角度再绕这两个向量的法线旋转该角度即可。
由于每次只绕一个固定的轴旋转因此并不会产生万向节死锁的问题。
这里我自己实现了一种类似于偏轴角的旋转定义但是比偏轴角的方法更符合用户在屏幕上的旋转操作。
方法是通过将触点映射到三维坐标上对前后相邻的两个触点手指滑动形成作一条直线该条直线和垂直于屏幕的另一条直线形成一个平面该平面的法线即是物体的旋转轴再通过触点的位移得到合适的旋转角度把物体绕该法线旋转即可记手指在屏幕上滑动形成的向量为垂直于屏幕向外的向量为