录十六

持之以恒

史上最全ASCII码对照表

ASCII(American Standard Code for Information Interchange)的中文全称是美国信息交换标准代码,它是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称ASCII码。

3D中的旋转变换

在3D坐标系中,可以绕三个轴进行旋转,x轴,y轴,z轴。这里暂不考虑平移,所以只讨论旋转轴通过原点的情况。

一、绕坐标轴旋转

  1. 绕Z轴旋转:

求两条线段的交点

求线段交点,是计算几何中一种非常基础的计算几何算法。但是发现网上的好几种算法,性能都不是特别好。下面提供一种在国外论坛上发现的,效率比较高的算法。

如下图所示,已知线段A(P1,P2) 和线段B(P3,P4),求两条线段的交点P。

lineline1.jpg

求点到线段的最短距离

点到线段的最短距离与点到直线的最短距离,二者在概念上是存在一定差异的。求点到线段最短距离时,需要考虑点在沿线段方向的投影点是否在线段上。若在线段上,点到线段的最短距离才等于点到直线的距离;否则,点到线段的最短距离则是点到线段某一端点的距离。如图所示:

x1.png

求直线与面的交点

如下图所示,已知面的法向量为N=(A,B,C),且M是面上确定的一点,求直线P1P2与平面的交点P。

1ddd.png

射线与AABB包围盒的碰撞检测

射线在3D图形学中有很多重要的应用,如子弹射线的碰撞检测,游戏中物品的拾取等。在游戏中,一个模型是由很多的三角面构成,如果要对物体的所有三角面进行摄像的碰撞检测,那么效率是极其底下的,就是以现在的计算机运算能力,也是无法高效完成。因此,在真正的开发过程中,一般都退而求次,使用射线与模型的包围盒进行碰撞检测。

Copyright © 1999-2019, lu16.com, All Rights Reserved