当前位置:  编程技术>移动开发
本页文章导读:
    ▪【OpenGL】绕随便单位轴旋转矩阵计算        【OpenGL】绕任意单位轴旋转矩阵计算在三维变换中,经常要用到旋转变换,而且很多变换是围绕任意轴的。那么下面就介绍绕任意单位轴旋转的两种方法。 假设要旋转的角度是a,围绕的轴是.........
    ▪ 字体颜色的刷新有关问题        字体颜色的刷新问题环境:当列表中的选项没有没选中时,标题栏的按钮字体   为灰色且不可点击。  当列表中的选项有被选中时,标题栏的按钮字体   为正常色且可点击 实现:在listView.........
    ▪ 非典型的NinePatch运用模式       非典型的NinePatch使用模式Android程序员对NinePatch文件一定很熟悉,因为它的应用实在是太广泛了,当图像需要拉伸或收缩时,一定会首先考虑到它,而由于Android设备那五花八门的分辨率,图像.........

[1]【OpenGL】绕随便单位轴旋转矩阵计算
    来源: 互联网  发布时间: 2014-02-18
【OpenGL】绕任意单位轴旋转矩阵计算

在三维变换中,经常要用到旋转变换,而且很多变换是围绕任意轴的。那么下面就介绍绕任意单位轴旋转的两种方法。

假设要旋转的角度是a,围绕的轴是r。


方法一:

(1)构建新的基

寻找另外两条单位长度的坐标轴s、t,他们相互垂直,而且与r垂直。这样r、s、t组成了一组新基。

具体求s的方法:

找到r中的最小分量,将其设置为0.然后交换其他两个分量,接着将第一个非零的分量取反(实际上也可以对另外一个非零分量取反)。

要求t,只需求r、s的叉积即可。

详细计算公式:



这样就确保了r、s、t组成了一组正交单位基。


(2)将标准基变换到新的基。

需要通过变换使得r和x轴重合,这样之后的旋转就是绕x轴的普通旋转。另外的两个轴也相互重合。

变换矩阵由上面的r、s、t向量组成:



(3)旋转

因为r与x重合,在新的基中我们只需围绕x轴进行旋转(正常情况下的旋转)即可。

假设旋转矩阵是Rx(a)。


(4)变换回到原来的标准基。

变换矩阵应该是M的逆矩阵,由于M是正交的,因此其逆矩阵就是其转置矩阵。


因此,最终的绕任意单位轴的变换矩阵是:



方法二

根据Goldman给出的公式进行计算,这个公式有点复杂:



具体推导过程可以参考:

http://www.cppblog.com/lovedday/archive/2008/01/12/41031.html

http://www.cnblogs.com/cg_ghost/archive/2012/04/27/2473347.html




    
[2] 字体颜色的刷新有关问题
    来源: 互联网  发布时间: 2014-02-18
字体颜色的刷新问题
环境:当列表中的选项没有没选中时,标题栏的按钮字体   为灰色且不可点击。  当列表中的选项有被选中时,标题栏的按钮字体   为正常色且可点击

实现:在listView的item点击监听中实现按钮的监听

 button.setEnabled(!mSelectedList.isEmpty());

 button.setTextColor(mSelectedList.isEmpty() ? R.color.zi : R.color.zir.WHITE);

问题:mSelectedList.isEmpty() ? R.color.zi : R.color.zir.WHITE 表达式中的R.color.zi第一种状态的颜色能显示。而后一种状态的颜色不能显示。


解决:mBtnConfirm.setTextColor(mSelectedList.isEmpty() ? R.color.zi : Color.WHITE);   用android自带的颜色能正常显示。


原因我也不知道,也没去研究,有兴趣的哥们可以去看看。









    
[3] 非典型的NinePatch运用模式
    来源: 互联网  发布时间: 2014-02-18
非典型的NinePatch使用模式

Android程序员对NinePatch文件一定很熟悉,因为它的应用实在是太广泛了,当图像需要拉伸或收缩时,一定会首先考虑到它,而由于Android设备那五花八门的分辨率,图像的拉伸收缩几乎是不可避免的....

Google已经为我们安排好了一个简单有效的NinePatch使用模式:

  • 创建图像文件
  • 使用sdk/tools/draw9patch工具,选择图像的拉伸收缩区域,以及内容显示区域(可选)
  • 将draw9patch生成的*.9.png文件复制到res/drawable目录中
  • 在UI文件或者程序代码中,直接使用文件对应的Drawable
  • 通常情况下,这种模式工作得很好,但有时候,我们还想要更多....比如,我们的图像来源于互联网,而不是编译到App中固定的图像
    那就要我们自己创建新的应用模式了:
  • (同上)创建图像文件
  • (同上)使用sdk/tools/draw9patch工具,选择图像的拉伸收缩区域,以及内容显示区域(可选)
  • 将draw9patch生成的*.9.png编译为Android特有的格式(还是可正常显示的png文件,但是将draw9patch中生成的上下左右4条边裁掉了,相关信息生成chunk数据嵌入png文件中)
  • 使用BitmapFactory载入编译后的NinePatch图像文件,获得Bitmap对象bmp
  • 确认Bitmap是合法的NinePatch文件:NinePatch.isNinePatchChunk(bmp.getNinePatchChunk())
  • 生成NinePatchDrawable对象:new NinePatchDrawable(getResources(), bmp, chunk, new Rect(), null);
  • 关于上面的步骤3:编译*.9.png文件,我还没有找到更简单的方法,目前的方法是,先创建一个傀儡App,将需要编译的9.png放入这个App并生成APK,再unzip这个APK文件并从res/drawable目录下取出编译后的*.9.png文件。另外,也有人做了命令行工具abrc可以编译*.9.png文件(http://forum.xda-developers.com/showthread.php?t=785012)


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    .net/c#/asp.net iis7站长之家
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3