
开篇
如果你想制作一款酷炫的动画效果或者做一款h5的小游戏,但又不知道如何入手?计算机动画怎么知道一个物体放到何处的?它又是怎么让物体移动的?等等类似的问题,解决这些问题,肯定少不了数学与物理基础知识的应用,从本系列文章起,笔者将介绍一些基础的数学与物理知识,希望对你有所帮助。
本篇文章先从最基础的点和直线开始介绍,主要涉及以下内容:
坐标系和点
直线及计算直线的斜率
检测直线是否相交及计算交点
在网页上绘制直线和箭头
文末电子书福利
本篇文章阅读时间预计8分钟。
01
坐标系和点
让我们先来思考一个问题,计算机是怎么将我们指定的物体放置到对应的位置?一般来说,我们开发人员是通过使用笛卡尔坐标系确定物体的具体位置,笛卡尔坐标系由一个水平轴x和一个垂直轴y组成,每个点都可以写成类似(x,y),其中x和y分别为该点在x轴和y轴上的坐标值。坐标系的原点(0,0)是量轴相交的地方。从原点出发,向右是x轴的正方向,向左是x轴的负方向;同样,y轴的正方向向上,y轴的负方向向下。
在二维坐标系里表示点
例1: 现在有个需求在屏幕上放置6个物体A-F,并在笛卡尔坐标系进行表示。
A(0,0)、B(1,2)、C(4,3)、D(-1,2),E(-2,-1)和 F(3,-2)。

在三维坐标系里表示点
所谓的三维坐标,就是在二维的基础上,添加第三个坐标轴——Z轴而已。z轴的具体方向在哪,目前还没有统一的标准。目前有两个标准:左手系统和右手系统。
伸出你的右手,弯曲你的无名指和小拇指,让大拇指指向右方(X轴的正方向),并且让食指指向上方(Y轴的正方向),那你会发现中指指向屏幕的外部(Z轴的正方向)。如果用左手做同样的事情,让左大拇指指向右方(X轴的正方向),食指向上(Y轴的正方向),那么你的中指指向屏幕的内部(左手系统中Z轴的正方向)。本系列文章会选择y轴向上的右手系统,原因有以下几点:
它是传统数学中采用的坐标系
它是大多数开发人员采用的坐标系
它是OPENGL中采用的坐标系。
在这种坐标系中,我们可以用(x,y,z)来表示三维空间的任意一个位置。
例2: 如图所示,给出P点的坐标:

我们做了黄色的辅助线,可以清楚看出p的坐标,其实p点沿着原点右移了2个单位,然后向上移了4个单位,再沿着z轴移动了5个单位,因此p点的坐标为(2,4,5)
屏幕中的坐标系
前面我们讲