矩阵和用css3和js做个立方体体哪个更强大

你们觉得矩阵和立方体哪个更强大?【变形金刚吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:334,549贴子:
你们觉得矩阵和立方体哪个更强大?收藏
立方体能量巨大可以制作变形金刚,矩阵可以让死了的变形金刚复活。各位TF觉得这两个东西到底哪个强大呢?
变形金刚,苏宁红孩子,13年专营母婴,专业保障!千万商品质量保证,用的放心!变形金刚,6000万妈咪的共同选择,苏宁红孩子让您省钱省心,极速物流,货到付款!
矩阵好点吧,能把自己战友复活
矩阵强大,要是把变2里的矩阵换成立方体,擎天柱彻底烧死了
登录百度帐号推荐应用矩阵的几何解释_logan_新浪博客
矩阵的几何解释
矩阵的几何解释
一般来说,方阵能描述任意线性变换。线性变换保留了直线和平行线,但原点没有移动。线性变换保留直线的同时,其他的几何性质如长度、角度、面积和体积可能被变换改变了。从非技术意义上说,线性变换可能“拉伸”坐标系,但不会“弯曲”或“卷折”坐标系。
矩阵是怎样变换向量的
向量在几何上能被解释成一系列与轴平行的位移,一般来说,任意向量v都能写成“扩展”形式:
另一种略有差别的形式为:
注意右边的单位向量就是x,y,z轴,这里只是将概念数学化,向量的每个坐标都表明了平行于相应坐标轴的有向位移。
​​让我们将上面的向量和重写一遍,这次分别将p、q、r定义为指向+x,+y和+z方向的单位向量,如下所示:
v = xp + yq + zr
现在,向量v就被表示成向量p,q,r的线性变换了,向量p,q,r称作基向量。这里基向量是笛卡尔坐标轴,但事实上,一个坐标系能用任意3个基向量定义,当然这三个基向量要线性无关(也就是不在同一平面上)。以p、q、r为行构建一个3
x 3矩阵M,可得到如下矩阵:
​用一个向量乘以该矩阵,得到:
​如果把矩阵的行解释为坐标系的基向量,那么乘以该矩阵就相当于执行了一次坐标转换,如果aM=b,我们就可以说,M将a转换到b。
从这点看,术语“转换”和“乘法”是等价的。
坦率地说,矩阵并不神秘,它只是用一种紧凑的方式来表达坐标转换所需的数学运算。进一步,用线性代数操作矩阵,是一种进行简单转换或导出更复杂转换的简便方法。
矩阵的形式:
基向量[1, 0, 0], [0, 1, 0], [0, 0, 1]乘以任意矩阵M:
​用基向量[1, 0,
0]乘以M时,结果是M的第1行。其他两行也有同样的结果,这是一个关键的发现:矩阵的每一行都能解释为转换后的基向量。
这个强有力的概念有两条重要性质:
1、有了一种简单的方法来形象化解释矩阵所代表的变换。
2、有了反向建立矩阵的可能 ----
给出一个期望的变换(如旋转、缩放等),能够构造一个矩阵代表此变换。我们所要做的一切就是计算基向量的变换,然后将变换后的基向量填入矩阵。
首先来看看2D例子,一个2 x 2矩阵:
​这个矩阵代表的变换是什么?首先,从矩阵中抽出基向量p和q:
​p = [2 & 1]
q = [-1 &2]
图7.1以“原”基向量(x轴,y轴)为参考,在笛卡尔平面中展示了这些向量。
如图7.1所示,x基向量变换至上面的p向量,y基向量变换至q向量。所以2D中想象矩阵的方法就是想象由行向量构成的“L”形状。这个例子中,能够很清楚的看到,M代表的部分变换是逆时针旋转26度。
当然,所有向量都被线性变换所影响,不只是基向量,从“L”形状能够得到变换最直观的印象,把基向量构成的整个2D平行四边形画完整有助于进一步看到变换对其他向量的影响,如图7.2所示:
平行四边形称作“偏转盒”,在盒子中画一个物体有助于理解,如图 7.3 所示:
很明显,矩阵M不仅旋转坐标系,还会拉伸它。
这种技术也能应用到3D转换中。2D中有两个基向量,构成"L"型;3D中有三个基向量,它们形成一个”三脚架“。首先,让我们展示出一个转换前的物品。图7.4展示了一个茶壶,一个立方体。基向量在”单位“向量处。
(为了不使图形混乱,没有标出z轴基向量[0, 0, 1],它被茶壶和立方体挡住了。)
现在,考虑以下3D变换矩阵:
从矩阵的行中抽出基向量,能想象出该矩阵所代表的变换。变换后的基向量、立方体、茶壶如图7.5所示:
这个变换包含z轴顺时针旋转45度和不规则缩放,使得茶壶比以前”高“。注意,变换并没有影响到z轴,因为矩阵的第三行是[0,
博客等级:
博客积分:0
博客访问:18,068
关注人气:0
荣誉徽章:扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
模型视图矩阵和投影矩阵[转]
阅读&1815 |
http://m.blog.csdn.net/blog/qb371/8650094webgl笔记-1.模型视图矩阵和投影矩阵最近在学习WebGL技术的过程中,我补充了一些原本了解甚少的计算机图形学知识。如果有同学和我一样,没有系统学过计算机图形学就接触了3D图形编程,而对不少略为艰深的概念有困惑,希望这些笔记能够帮助你。模型矩阵我们必须考虑,当空间中点的位置会发生变化的时候,其坐标如何变化。考虑三种基本的变换:平移、旋转和缩放。“变换”的含义就是,将点的初始位置的坐标P映射到平移、旋转、缩放后的位置坐标P’,即:??xyz??→???x′y′z′???平移变换是最简单的变换:???x′y′z′???=??xyz??+??txtytz??旋转变换有一些复杂,先看在二维平面上的旋转变换:很容易得到:x′=xcosθ-ysinθy′=xsinθ+ysinθ矩阵形式的表达更加简洁,后面大多使用这种形式:[x′y′]=[cosθsinθ-sinθcosθ][xy]推广到三维空间中:&点绕z轴旋转:???x′y′z′???=??cosθsinθ0-sinθcosθ0001????xyz??点绕x轴旋转:???x′y′z′???=??1000cosθsinθ0-sinθcosθ????xyz??点绕y轴旋转:???x′y′z′???=??cosθ0sinθ010-sinθ0cosθ????xyz??绕指定的任意轴旋转变换是由几个绕坐标轴旋转变换和平移变换效果叠加而成的,后文会有详细叙述。缩放变换也比较简单:???x′y′z′???=??sx000sy000sz????xyz??总结一下:平移变换,变换后点坐标等于初始位置点坐标加上一个平移向量;而旋转变换和缩放变换,变换后点坐标等于初始位置点坐标乘以一个变换矩阵。P′=P+T,P′=R?P,P′=S?P齐次坐标这天才的发明,允许平移变换也表示成初始位置点坐标左乘一个变换矩阵的形式。齐次坐标使用4个分量来表示三维空间中的点,前三个分量和普通坐标一样,第四个分量为1。??xyz??→????xyz1????平移变换巧妙地表示为:?????x′y′z′1?????=?????100001000010txtytz1?????????xyz1????旋转变换(以绕z轴旋转为例)和缩放变换相应为:?????x′y′z′1?????=????cosθsinθ00-sinθcosθ0000100001????????xyz1?????????x′y′z′1?????=?????sx00&00sy0000sz0001?????????xyz1????综上,在齐次坐标下三种基本变换实现了形式上的统一,这种形式的统一意义重大。P′=T?P,P′=R?P,P′=S?P矩阵有一个性质:M?(A?B)=(M?A)?B考虑一个点,先进行了一次平移变换,又进行了一次旋转变换,结合上面矩阵的性质,可知变换后的点P’为:P=R?(T?P)=(R?T)?P旋转矩阵和平移矩阵的乘积R·T也是一个4×4的矩阵,这个矩阵代表了一次平移变换和一次旋转变换效果的叠加;如果这个点还要进行变换,只要将新的变换矩阵按照顺序左乘这个矩阵,得到的新矩阵能够表示之前所有变换效果的叠加,将最初的点坐标左乘这个矩阵就能得到一系列变换后最终的点坐标,这个矩阵称为“模型矩阵”。一个模型矩阵乘以另一个模型矩阵得到的还是一个模型矩阵,表示先进行右侧模型矩阵代表的变换,再进行左侧模型矩阵代表的变换这一过程的效果之和,因此模型矩阵的乘法又可以认为是闭合的。&模型矩阵之所以称之为“模型矩阵”,是因为该矩阵与点的位置没有关系,仅仅包含了一系列变换的信息。而在三维世界中,一个模型里所有的顶点往往共享同一个变换,对应同一个模型矩阵,比如抛在空中的一个木块,运转机器的一个齿轮。之前说到,考虑一个物体绕指定轴旋转,如以下这个变换:绕着过顶点(x,y,z)方向为(a,b,c)的轴旋转角度θ,利用多个变换的叠加构建绕任意轴旋转的变换矩阵。&首先将顶点(x,y,z)平移到原点,绕x轴旋转角度p使指定的旋转轴在x-z平面上,绕y轴旋转角度q使指定的旋转轴与z轴重合,绕指定旋转轴(也就是z轴)旋转角度θ,绕y轴旋转角度-q,绕x轴旋转角度-p,将顶点平移到向量(x,y,z),p和q的值由方向(a,b,c)决定。综上,变换矩阵为:R????xyz????abc??θ??=T??xyz???Rx(-p)?Ry(-q)?Rz(θ)?Ry(q)?Rx(p)?T??-x-y-z??因此在处理围绕非坐标轴旋转的模型时,根据指定的旋转参数可以直接按照上述公式生成按照指定轴旋转的旋转矩阵,参加模型矩阵的构建。齐次坐标还有一个优点,能够区分点和向量:在普通坐标里,点和向量都是由三个分量组成的,表示位置的点坐标(2,3,4)和表示方向的向量(2,3,4)没有区别。而在齐次坐标中,第四个分量可以区分它们,点坐标的第四个分量为1,而向量坐标第四个分量为0。比如,平移一个点是有意义的,能够得到平移后的点坐标;而平移一个向量是没有意义的,方向不会因为平移而改变。以上,我们已经了解到模型矩阵可以存储一个模型空间位置变化的信息,在生成三维动画每一帧的过程中,我们首先计算每个模型的模型矩阵,然后将最初的模型的每一顶点坐标都左乘该模型矩阵,得到这一帧表示的时刻(模型已经经过多次变换)该模型每一顶点的坐标。上面说的“帧”并不狭义地指屏幕的两次刷新时间的短暂间隔中屏幕上呈现的图像,而是指在这幅图像所描绘的整个三维空间的这个瞬间的所有顶点的位置。来看个具体的例子:一个绕z轴匀速螺旋匀速上升的立方体,在某一帧中(即在这一帧对应的时刻t下),其向z轴正方向平移的长度和绕z轴旋转的角度分别为:tz=t?vt,θz=t?ωt则模型矩阵(注意上文齐次坐标下的基本变换矩阵)为:mMatrix=Rz(θz)?T(0,0,tz)=????cosθzsinθz00-sinθzcosθz0000100001????????10000100001000tz1????产生这一帧时,只需要计算一次模型矩阵,再将立方体中8个顶点坐标分别左乘该矩阵,就可以得到经过变换后8个顶点的坐标。当一个模型顶点数量增加到上百甚至上千个,模型变换的步骤数也增加到几十步时,模型矩阵的作用就很明显了:如果没有齐次坐标(也当然没有模型矩阵),对每个顶点都需要一步一步地变换:平移的时候加上一个向量,旋转的时候左乘一个矩阵,才能得到变换后的顶点坐标;而模型变换只需要计算一次模型矩阵(当然也是一步一步的),然后每个顶点左乘模型矩阵就可以直接得到变换后的坐标了。视图矩阵在模型矩阵中,我们关心的是空间中的点在经历变换后在世界坐标系下的位置。事实上,我们更加关心空间中的点相对于观察者的位置。最简单的方案是将观察者置于原点处,面向z轴(或x轴、y轴)正半轴,那么空间中的点在世界坐标系下的位置就是其相对于观察者的位置。&观察者的位置和方向会变化,看上去就好像整个世界的位置和方向发生变化了一样,所以解决的方案很简单,将世界里的所有模型看作一个大模型,在所有模型矩阵的左侧再乘以一个表示整个世界变换的模型矩阵,就可以了。这个表示整个世界变换的矩阵又称为“视图矩阵”,因为他们经常一起工作,所以将视图矩阵乘以模型矩阵得到的矩阵称为“模型视图矩阵”。模型视图矩阵的作用是:乘以一个点坐标,获得一个新的点坐标,获得的点坐标表示点在世界里变换,观察者也变换后,点相对于观察者的位置。视图矩阵同样也可以分为平移、旋转和缩放,视图矩阵是将观察者视为一个模型,获得的观察者在世界中变换的模型矩阵的逆矩阵。观察者平移了(tx,ty,tz),视图矩阵如下,可以看出如果将视图矩阵看作整个世界的模型矩阵,相当于整个世界平移了(-tx,-ty,-tz)。?????100001000010txtytz1?????-1=?????100001000010-tx-ty-tz1?????观察者绕z轴旋转了角度θ,视图矩阵如下,相当于整个世界绕z轴旋转了-θ度。????cosθsinθ00-sinθcosθ0000100001????-1=????cosθ-sinθ0&0sinθcosθ0000100001????观察者在三个方向等比例缩小了s倍,视图矩阵如下,相当于整个世界放大了s倍。?????sx0000sy0000sz00001?????-1=?????1/sx00001/sy00001/sz00001?????观察者缩小的情形可能会引起困惑:如果人和猫咪的眼睛在同一个位置,人看到的世界和一只猫咪看到的世界应当是一样尺寸的,这和上述视图矩阵的情形矛盾;但是直觉告诉我,如果你喝了缩小药水,你应该会觉得整个世界在膨胀,就像视图矩阵所表现的那样。解答是这样:如果在计算机上模拟观察者喝了缩小药水的情形,在屏幕上看到整个世界是膨胀的,因为在那个虚拟的三维空间中,计算机屏幕这个“窗口”也随你(观察者)缩小。&视图矩阵实际上就是整个世界的模型矩阵,这给我一点启发:一个模型可能由多个较小的子模型组成,模型自身有其模型矩阵,而子模型也有自己的局部模型矩阵。考虑一辆行驶中的汽车的轮胎,其模型视图矩阵是局部模型矩阵(描述轮胎的旋转)左乘汽车的模型矩阵(描述汽车的行驶)再左乘视图矩阵得到的。投影矩阵模型视图矩阵的作用是确定某一帧中,空间里每个顶点的坐标,而投影矩阵则将这些顶点坐标映射到二维的屏幕上,即:????xyz1????→[x′y′]最主要的有两种投影方式,正射投影和透视投影。前者用于精确制图,如工业零件侧视图或建筑物顶视图,从屏幕上就可以量测平行于屏幕的线段长度;后者用于模拟视觉,远处的物体看上去较小。下图中,空间中的同一个矩形,正射投影后仍然是矩形,而透视投影后则变成了梯形。正射投影(投影面和相机空间):透视投影(投影面和相机空间):三维世界的显示中,屏幕模拟了一个窗口,你透过这个窗口观察“外面”的世界。你的屏幕是有边缘的(除非你有一个球形的房间,内壁全是屏幕),因此你仅仅能观察到那个世界的一部分,即“相机空间”。相机空间的左、右、上、下边界是受限于屏幕的边缘,同时也设定前、后边界,因为你很难看清太近或太远的东西。在正射投影中,相机空间是一个规则的立方体,而在透视投影中则是一个方台体。&三维模型可能在不同的显示器上展现,因此投影的过程中不该将显示器参数加入进来,而是将空间中的点投影到一个规范的显示器中。另外,透视投影中的z值并不是毫无用处,它可以用来表示顶点的“深度”:如果三维空间中的两个不同顶点投影到平面上时重合了,那么将显示深度较浅的顶点。定义一个规范的视窗区域(CCV),为x,y,z都处在区间[-1,1]之间的边长为2的立方体。x和y坐标值用来线形拉伸到到实际屏幕上,而z值存储了“深度”。而投影的过程就是将三维空间中的点从相机空间映射到CCV中。&正射投影非常简单,直接将矩形的相机空间线形压缩到CCV中即可。采取顶视图,相机空间的左右边界为&xleft&和&xright&:简单的线形成比例关系:x-xleftxright-xleft=x′-(-1)1-(-1)x′=2xright-xleft?x-xright+xleftxright-xleft推广到y轴和z轴:?????x′y′z′1?????=?????????????2xright-xleft00002ytop-ybottom00002zback-zfront0-xright+xleftxright-xleft-ytop+ybottomytop-ybottom-zback+zfrontzback-zfront1??????????????????xyz1????相机空间中的点经过正射投影矩阵左乘后得到的点都在CCV之中:-1&x′&1-1&y′&1-1&z′&1透视投影相对较为复杂,同样用顶视图考虑x坐标的情况:xph=xzxp-xleftxright-xleft=x′-(-1)1-(-1)x′=1z?2hxright-xleft-xright+xleftxright-xleft转化为齐次的方式:z?x′=x?2hxright-xleft-xright+xleftxright-xleft推广到y轴:?????z?x′z?y′z?z′z?????=??????????2xright-xleft00002ytop-ybottom00-xright+xleftxright-xleft-ytop+ybottomytop-ybottomtz100sz0???????????????xyz1????透视投影矩阵的第三行不是我们关心的内容,只要保证不同顶点投影前后的点坐标的第三个分量z和z’的大小关系不变就可以。&透视投影矩阵尾行是(0,0,1,0),这样就将计算得到的坐标的第四个分量赋值为z而不是1。将相机空间左乘投影矩阵后的结果不是一个CCV空间,如果你将这个空间画出来,会发现其仍然是一个方台形。这时进行“透视除法”,将上一步得到的点坐标化为第四个分量为1的标准齐次坐标:?????x′y′z′1?????=?????z?x′z?y′z?z′z′??????1z然后我们直接取齐次坐标中的x’和y’值,并将其线形映射到屏幕上,比如点(0,0)出现在屏幕中央,点(-1,1)出现在屏幕左上角。WebGLWebGL中对于模型视图矩阵和投影矩阵的操作依赖于第三方库,比如Oak3D或glMatrix,WebGL本身不支持(或者说不限制)任何对模型视图矩阵和投影矩阵的操作。&WebGL是在浏览器端运行的,所以使用JavaScript编程。下面的代码来自翻译的的WebGL教程。以glMatrix库为例:// 新建空模型视图矩阵
var mvMatrix = mat4.create();
// 将矩阵设置为单位阵
mat4.identity(mvMatrix);
// 平移和旋转
mat4.translate(mvMatrix, [-1.5, 0.0, -8.0]);
mat4.rotate(mvMatrix, degToRad(45), [0, 1, 0]);将矩阵设置为单位阵相当于说:“这个矩阵表示什么都还没做(平移、旋转、缩放)呢”,事实上,任意点坐标乘以单位矩阵都只能得到自己,正说明“什么都没做”。&平移矩阵的函数mat4.translate()做的仅仅是将mvMatrix左乘一个平移矩阵而已。旋转矩阵的函数mat4.rotate()也许比较复杂,它做的是上面我们讨论过的“围绕任意轴旋转”的,这个函数默认使用“本地轴”,即过所有平移效果累加后的那一点的轴,参数向量[0,1,0]是轴的指向,因此上面的函数调用处理了一个围绕本地y轴的旋转。// 新建空投影矩阵
var pMatrix = mat4.create();
// 初始化投影矩阵
mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0, pMatrix);投影矩阵不会因为场景里模型的位置变化或观察者的移动而变化(当然如果你想模拟观察者戴眼镜的过程你可能要考虑),故而投影矩阵只需要一次初始化就够了。初始化需要给出相机空间的前、后、左、右、上、下边界,很容易从函数调用里传入的参数推知:包括前、后边界,相机空间的宽高比和水平视场角。&如果你使用脚本调试工具监测矩阵对象mvMatrix和pMatrix,就会发现他们仅仅是有16个元素的Float32Array对象而已,你完全可以亲自处理它。值得一提的是glMatrix库的函数大多不返回处理后的矩阵,在将矩阵作为参数传入时已经给了函数修改矩阵的权利,很少的情况下需要会写这样的代码(但其他的库不一定这样):xMatrix = matX.operate();使用库函数或自力更生处理完矩阵后,通过着色器程序传递到着色器中(着色器程序是JavaScript脚本里的概念,而着色器是用其他脚本语言编写的在显卡中运行的逻辑,这些不在本文的讨论范围内):// 设置着色器程序
shaderProgram.pMatrixUniform = gl.getUniformLocation(shaderProgram, "uPMatrix");
shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix");
// 将模型视图矩阵和投影矩阵传入着色器
gl.uniformMatrix4fv(shaderProgram.pMatrixUniform, false, pMatrix);
gl.uniformMatrix4fv(shaderProgram.mvMatrixUniform, false, mvMatrix);然后看看着色器里的代码,这是用x-shader类型的脚本语言写的:void main(void){
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
}&可以看到屏幕上点坐标由初始点坐标左乘模型视图矩阵,再左乘投影矩阵得到的。对于较复杂的场景,我猜测可能需要重新编写着色器,将模型矩阵和视图矩阵拆开处理。综上所述,模型视图矩阵和投影矩阵是三维计算机图形学的基石。关于这两个矩阵的知识虽然不是进行3D图形编程的必须,但是至少能够帮助我们更好地了解那些库函数在做些什么,或者自己直接操作矩阵对象。其他我写这篇博文参考了:&1. Donald Hearn & M. Pauline Baker 的著作《计算机图形学》&2. 这一篇关于投影矩阵的博文:http://blog.csdn.net/yanwei2016/article/details/7326180(虽然题目是模型视图矩阵变化,但大部分篇幅都在讲投影矩阵)&3. 站点翻译的的WebGL教程
作者的其他最新博客
评论 ( 个评论)数据立方体模型总结;数据立方体认识;定义:数据立方体是一类多维矩阵,让用户从多个角度;数据立方体的构成:数据立方体由两个单元构成;1)维度:因素2)测度:实际的数据值;建立数据立方体模型的方法(OLAP);OLAP(On-lineAnalyticalPr;应用,专门设计用于支持复杂的分析操作,侧重对决策;(拓展)当今数据处理大致分为两类:OLAP(On;别:
数据立方体模型总结 数据立方体认识
定义:数据立方体是一类多维矩阵,让用户从多个角度探索和分析数据集,通常是一次同时考虑三个因素(维度)。数据立方体模型属于数据仓库的多维数据模型。 意义:当我们试图从一堆数据中提取信息时,我们需要工具来帮助我们找到那些有关联的和重要的信息,以及探讨不同的情景。一份报告,不管是印在纸上的还是出现在屏幕上,都是数据的二维表示,是行和列构成的表格。在我们只有两个因素要考虑时,这就足矣,但在真实世界中我们需要更强的工具。数据立方体模型在预测趋势和分析业绩时,数据立方体是极其有用的。 数据立方体的构成:数据立方体由两个单元构成 1)维度:因素 2)测度:实际的数据值
建立数据立方体模型的方法(OLAP) OLAP(On-line Analytical Processing,联机分析处理)是共享多维信息的、针对特定问题的联机数据访问和分析的快速软件技术。联机分析处理(OLAP)系统是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可以根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员,以便他们准确掌握企业(公司)的经营状况,了解对象的需求,制定正确的方案。在国外,不少软件厂商采取了发展其前端产品来弥补关系数据库管理系统支持的不足,力图统一分散的公共应用逻辑,在短时间内响应非数据处理专业人员的复杂查询要求。 (拓展)当今数据处理大致分为两类:OLAP(On-line Analytical Processing,联机分析处理)OLTP(On-line Transaction Processing,联机事务处理),两者的区别: OLAP与OLTP 数据处理类型 面向对象 功能实现 数据模型 数据量 操作类型
OLTP 业务开发人员 日常事务处理 关系模型 几条或几十条记录 查询、插入、更新、删除 OLAP 分析决策人员 面向分析决策 多维模型 百万千万条记录 查询为主 OLAP的基本操作 我们已经知道OLAP的操作是以查询――也就是数据库的SELECT操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表关联,可以使用COUNT、SUM、AVG等聚合函数。OLAP正是基于多维模型定义了一些常见的面向分析的操作类型是这些操作显得更加直观。
OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot),下面还是以上面的数据立方体为例来逐一解释下:
钻取(Drill-down):在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,比如通过对2010年第二季度的总销售数据进行钻取来查看2010年第二季度4、5、6每个月的消费数据,如上图;当然也可以钻取浙江省来查看杭州市、宁波市、温州市……这些城市的销售数据。
上卷(Roll-up):钻取的逆操作,即从细粒度数据向高层的聚合,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据,如上图。
切片(Slice):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者2010年第二季度的数据。
切块(Dice):选择维中特定区间的数据或者某批特定值进行分析,比如选择2010年第一季度到2010年第二季度的销售数据,或者是电子产品和日用品的销售数据。 旋转(Pivot):即维的位置的互换,就像是二维表的行列转换,如图中通过旋转实现产品维和地域维的互换。 OLAP的类型(根据存储方式的不同进行分类) 根据多维数据模型存储方式不同,OLAP主要可以分为三类:基于多维数据库OLAP(MOLAP),基于关系数据库的OLAP(ROLAP)和混合型的HOLAP。 1 MOLAP MOLAP表示基于多维数据组织的OLAP实现(Multidimensional OLAP)。以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成\立方块(Cube)\的结构,在MOLAP中对\立方块\的\旋转\、\切块\、\切片\是产生多维数据报表的主要技术。特点是将细节数据和聚合后的数据均保存在cube中,所以以空间换效率,查询时效率高,但生成cube时需要大量的时间和空间。 2 ROLAP ROLAP表示基于关系数据库的OLAP实现(Relational OLAP)。以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了\星型模式\。对于层次复杂的维,为避免冗余数据占用过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为\雪花模式\。特点是将细节数据保留在关系型数据库的事实表中,聚合后的数据也保存在关系型的数据库中。这种方式查询效率最低,不推荐使用。 3 HOLAP HOLAP表示基于混合数据组织的OLAP实现(Hybrid OLAP)。由于MOLAP和ROLAP有着各自的优点和缺点,他们的结构也是迥然不同,这给分析人员设计OLAP结构提出难题。为此提出一个新的结构HOLAP(混合型olap),它能将MOLAP和ROLAP两种结构的优点结合起来。但是迄今为止还没能给HOLAP一个明确的定义。很明显HOLAP不是简单的MOLAP和ROLAP简单的有机结合,而是这两种技术的优点的集合,能满足用户各种的分析请求。如低层是关系型的,高层是多维矩阵型的。这种方式具有更好的灵活性。特点是将细节数据保留在关系型数据库的事实表中,但是聚合后的数据保存在cube中,聚合时需要比ROLAP更多的时间,查询效率比ROLAP高,但低于MOLAP。 RLOAP和MOLAP的区别:
OLAP的衡量标准 1.多维性 2.直观性 3.可访问性 4.解释性批处理提取 5.OLAP分析模型 6.客户机/服务器结构性 7.透明性或开放性 8.多用户性 9.处理非正规数据性 10.存储OLAP结果 11.提取丢失值 12.处理丢失值 13.弹性报告 14.一致性能报告 15.对物理层的自动调整 16.通用维 17.无限维与聚合层 18.无限制跨维操作 OLAP的实现
数据库去实现的即时记录的功能,在数据准备区进行ETF处理,数据经过抽取、转换之后加载到数据仓库中,因此也说数据仓库是利用的已经存在的历史记录去整合,是利用原有数据分析下一步行动的决策,是有风险的。分析完主题和数据元后建立数据模型(概念模型、逻辑模型、物理模型)并形成事实表和纬度表,然后通过粒度分析将历史记录先抽取整合,然后再根据决策者可能用到的数据集合分解成若干记录,以备不同决策者使用;再利用OLAP工具技术进行数据的分析导出。当然,这些都在了解了管理者即客户的需求之后进行的,或者是由企业的管理者自己进行的技术应用或分析。 OLAP的优势 OLAP的优势是基于数据仓库面向主题、集成的、保留历史及不可变更的数据存储,以及多维模型多视角多层次的数据组织形式,如果脱离的这两点,OLAP将不复存在,也就没有优势可言。 数据展现方式
基于多维模型的数据组织让数据的展示更加直观,它就像是我们平常看待各种事物的方式,可以从多个角度多个层面去发现事物的不同特性,而OLAP正是将这种寻常的思维模型应用到了数据分析上。 查询效率
多维模型的建立是基于对OLAP操作的优化基础上的,比如基于各个维的索引、对于一些常用查询所建的视图等,这些优化使得对百万千万甚至上亿数量级的运算变得得心应手。 分析的灵活性
我们知道多维数据模型可以从不同的角度和层面来观察数据,同时可以用上面介绍的各类OLAP操作对数据进行聚合、细分和选取,这样提高了分析的灵活性,可以从不同角度不同层面对数据进行细分和汇总,满足不同分析的需求。
是不是觉得其实OLAP并没有想象中的那么复杂,一旦多维数据模型建成后,在上面做OLAP其实是一件很cool的事情。
三亿文库包含各类专业文献、应用写作文书、高等教育、幼儿教育、小学教育、生活休闲娱乐、72数据立方体模型总结等内容。 
 物联网数据处理模型_信息与通信_工程科技_专业资料。...RFID 立方体 保持了三个表: (1)信息表,能储存...五、总结及今后的研究作为下一代互联网的重要发展...  NOIP的DP总结之经典模型_学科竞赛_高中教育_教育专区。NOIP的dp模型总结 ...*4*最大子立方体问题 枚举一组边 i 的起始,压缩进矩阵 B[I,j]+=a[x,I...  数据立方体模型总结_计算机软件及应用_IT/计算机_专业资料。关于数据库的模型 数据立方体模型总结数据立方体认识定义:数据立方体是一类多维矩阵,让用户从多个角度探索和...  (3)在建立的数据库基础上建立基本数据立方体。 ? 实验原理 1 、关系型数据库 关系数据库,是创建在关系模型基础上的数据库,借助于集合代数等数学概 念和方法来...  数据立方体关 于数据立方体( Data Cube ),这里必须注意的是数 据立 方体只是多维模型的一个形象 的说 法 。立方体其本 身只 有三维 ,但多维 模型 不仅限于...  模型总结_建筑/土木_工程科技_专业资料。单元体重复及穿插叠积。 重复可以体现出...就是感觉做起来比较 麻烦, 因为我做的单元体是立方体, 需要把六个面都糊起来...  人力资源开发与培训方法之一 人力资源开发与培训方法之一――立方体培训模型―――立方体培训模型―― 立方体培训模型立方体培训模型是以欧洲学者菲奥和波梅森提出的立...  数据仓库安全模型分析 摘要: 对数据仓库安全模型进行...年提出一种基于角色的 OLAP 数据立方体访问控 制...2 总结与展望 本文分析的几种数据仓库安全模型具有...

我要回帖

更多关于 超立方体邻接矩阵 的文章

 

随机推荐