三阶魔方

用DirectX实现魔方(二)

六眼飞鱼酱① 提交于 2019-12-31 02:00:56
这篇说一下如何构造魔方,主要包括魔方几何体的构造及纹理贴图。以下论述皆以三阶魔方为例,三阶魔方共有3 x 3 x 3 = 27个小立方体。 构造魔方 在第一篇里面说过,最初模型用的是微软的.x文件格式,由于魔方要实现按层旋转,所以不能将整个模型做成一个.x文件,只能分成若干个小立方体,每个立方体对应一个.x文件。这导致在发布程序的时候也要发布这些模型文件,而且.x文件已经逐渐为微软遗弃,所以就干脆不用了,自己画吧。魔方由27个小立方体构成,所以只要绘制一个小立方体,并复制27分,再将这个27个小立方体按一定顺序堆叠在一起,最后贴上纹理,就可以构成一个完整的魔方了。 一个小立方体包含六个面,由于每个面的纹理可能不同,所以需要逐个面绘制,这样可以方便的为每个面单独设置纹理。 一个面由两个三角形构成,这里采用TriangleStrip的方式进行绘制,只需要指定四个顶点即可,如果是TriangleList,则需要六个顶点。 顶点结构 下面来分析一下顶点的数据结构,首先要有一个位置坐标(位置是一个顶点必须要包含的信息),其次,为了添加光照效果,还需要一个法向量。最后,为了实现纹理贴图,需要有纹理坐标。所以一个完整的顶点有以下三部分构成: 位置 法向量 纹理坐标 用一个结构体来表示顶点,如下: struct Vertex { float x, y, z; // position float

三阶魔方教程(教不会你打我)

帅比萌擦擦* 提交于 2019-11-26 23:42:19
背景:最近,突然想起来,当年大学的时候学过怎么玩三阶魔方,当年依靠这个俘获了“万千少女”。最近看到有人在玩魔方,但是网上的资料太多,但是说的都不是太好,这是我写这篇博客的初衷,只要看我的这边博客后,三阶魔方玩不起来,你找我。 学习魔方首先就要搞清它的以上结构,知道角块只能和角块换位,棱块只能和棱块换位,中心块不能移动。国际魔方标准色为:上黄-下白,前蓝-后绿,左橙-右红。 来源: 51CTO 作者: 马吉辉 链接: https://blog.51cto.com/12445535/2453877