1.三角函数

坐标轴采用右手法则,沿Z轴的逆时针方向为正角度,假设原始点为p(x,y,z),a是X轴旋转到点p的角度,r是从原始点到p点的距离。用这两个变量计算出点p的坐标,等式如下:

x = rcos a;
y = rsin a;

类似的可以使用r,a,b(p旋转的角度)来表示p'的坐标:

x' = r cos(a + b);
y' = r sin(a + b);

利用三角函数两角和公式:

sin(a +/- b) = sin a cos b +/- cos a sin b
cos(a +/- b) = cos a cos b -/+ sin a sin b

可得:

x' = r(cos a cos b - sin a sin b)
y' = r(sin a cos b + cos a sin b)

最后将x,y等式带入,消除r 和 a 可得等式:

x' = x cos b - y sin b
y' = x sin b + y cos b
z' = z

另外计算中也会用到弧度计算功能:

radian = a * (PI / 180)

2.变换矩阵:旋转

矩阵和矢量的方式可以用如下等式表示:

等式的右边由x、y、z组成的矢量被称为三维矢量。计算方式如下:

x' = ax + by + cz
y' = dx + ey + fz
z' = gx + hy + iz

在看看三角函数的等式,并与其比较:

x' = ax + by + cz
x' = x cosb - y sinb

如果 a = cosb, b = -sinb,c = 0,那么两个等式完全相同。在看y':

y' = dx + ey + fz
y' = x sinb + y cosb

如果 d = sinb, e = cobb, f = 0,那么两个等式完全相同。将这些结果代入到等式3.4中,得到等式:

这个矩阵被称为变换矩阵(transformation matrix),也被称为旋转矩阵(rotation matrix)。

3.变换矩阵:平移

平移公式:x' = x + Tx。

如下所示是4*4矩阵:

该矩阵的乘法结果如下所示:

根据最后一个式子 1 = mx + ny + oz + p,很容易求得系数m = 0, n = 0, o = 0, p = 1;比较x',可知 a = 1, b = 0, c = 0, d = Tx;类似地,比较y',可知e = 0, f = 1,g = 0, h = Ty;比较z',可知i = 0, j = 0, k = 1, l = Tz。这样,就可以写出表示平移的矩阵,又称为平移矩阵(translation matrix)。如下所示:

4. 4*4的旋转矩阵

将旋转矩阵从一个3*3矩阵转变为一个4*4矩阵,只需要将旋转公式和4*4矩阵公式比较下:

x' = xcosb - ysinb
y' = xsinb + ycosb
z' = z
x' = ax + by + cz + d
y' = ex + fy + gz + h
z' = ix + jy + kz + l
l = mx + ny + oz + p

例如,当你通过比较x' = xcosb - ysinb与x' = ax + by +cz +d时,可知a = cosb, b = -sinb, c= 0, d = 0。以此类推,求得y'和z'等式中的系数,最终得到4*4的旋转矩阵。如下所示:

5.变换矩阵:缩放

假设在三个方向X轴,Y轴,Z轴的缩放因子Sx, Sy, Sz不相关,那么有:

x' = Sx * x
y' = Sy * y
z' = Sz * z

和矩阵的乘法结果比较,可知缩放操作的变换矩阵:

6.distance(position1, position2)

顶点着色器内置函数,计算出两个坐标之间的距离。参数:

position1:第一个坐标
    position2:第二个坐标
    返回距离,值为float类型

7.mix(x, y, z)函数(数学函数x*(1-z) + y*z)

GL_ES内置函数,该函数会计算x*(1-z) + y*z,其中x、y、z分别为第1、2和3个参数。

WebGL常用数学公式的更多相关文章

  1. MarkDown 编辑数学公式

    1. 参考博客:http://blog.csdn.net/smstong/article/details/44340637 1 数学公式的web解决方案 在网页上显示漂亮的数学公式,是多年来数学工作者 ...

  2. LaLeX数学公式

    启用数学公式: 需要插入公式时,用 $ 将公式包围.若需要输入多行,则用一对 $$ 包围. 例如: $$ \rho = \sqrt{(\Delta x)^{2}+(\Delta y)^{2}} \\ ...

  3. iOS开发中常用的数学函数

    iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...

  4. AS3动画效果常用公式

    缓动公式: sprite.x += (targetX – sprite.x) * easing;//easing为缓动系数变量 sprite.y += (targetY – sprite.y) * e ...

  5. Latex常用公式整理

    目录 常用 常用数学公式 常用希腊字母 说明:博客园中的Latex编辑是以$ latex公式 $,为边界. 1.常用 描述 Latex公式 表达式 下标 x_2 x2 上标 x^2 x2  分数 \f ...

  6. 【转载】markdown数学常用公式箭头符号

    来源1:https://www.jianshu.com/p/3f01c5658356 来源2:https://blog.csdn.net/smstong/article/details/4434063 ...

  7. ACM竞赛 Java编程小结

    1.字符串的长度 String str = new String(" abcd"); int length = str.length(); 2.数组的长度.排序 2.1对于 a[] ...

  8. 使用css3画饼图

    CSS3 Gradient介绍参考地址: http://www.cnblogs.com/lhb25/archive/2013/01/30/css3-linear-gradient.html http: ...

  9. as3 公式

    AS3缓动公式:sprite.x += (targetX - sprite.x) * easing;//easing为缓动系数变量sprite.y += (targetY - sprite.y) * ...

随机推荐

  1. C语言 · 最长字符串

    算法训练 最长字符串   时间限制:1.0s   内存限制:512.0MB      求出5个字符串中最长的字符串.每个字符串长度在100以内,且全为小写字母. 样例输入 one two three ...

  2. spidev 驱动 probe 获取 dts 节点参数

    一. 尝试在 spi 驱动里边读取 设备树里面 节点的信息 // dts 里面的参数配置 503 &spi0 { 504 status = "okay"; 505 pinc ...

  3. WebStorm 7.0 支持更多的Web技术

    JetBrains刚刚发布了WebStorm 7.0 GA,支持EJS.Mustache.Handlebars.Web组件.Stylus.Karma.Istanbul.Compass,并增强了很多功能 ...

  4. Java异常处理之InvocationTargetException(反射异常)

     Java异常处理之InvocationTargetException(反射异常) InvocationTargetException异常由Method.invoke(obj, args...)方法抛 ...

  5. 在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad

    简介 Haroopad:一款让你欲罢不能的Markdown编辑器 身为大程序员,我本来是不需要 Markdown 编辑器的,但是 Haroopad 让我简直欲罢不能,不能再爱更多.跨平台,代码高亮,V ...

  6. thymeleaf传值onclick到js

    带有单引号 targetUrl('val') <a th:onclick="'javascript:targetUrl(\''+${indexURL.value}+'\');'&quo ...

  7. Lucene增删改查

    IndexManager.java package com.witwicky.lucene; import java.io.File; import java.util.ArrayList; impo ...

  8. SQL Server默认1433端口修改方法

    SQL Server默认端口1433端口并不是十分的安全,需要将SQL Server默认端口进行更改,在更改之前,让我们先了解一下什么是1433端口. 什么是1433端口 1433端口,是SQL Se ...

  9. Change Data template dynamically

    1. Attached Property bound to task state. Any change will dynamically set data template.2. Visual St ...

  10. SharePoint 2013 Support for Windows Server 2012 R2

    Summary Currently, Microsoft SharePoint Server 2013 is not supported for installation on computers r ...