与上一篇文章分形之正方形折线相似,闵可夫斯基分形也是分形出正方体,不同之处是它分出了两个正方体。
核心代码:
static void FractalMinkowski(const Vector3& vStart, const Vector3& vEnd, Vector3* pVertices)
{
Vector3 vSub = vEnd - vStart;
Yreal len = D3DXVec3Length(&vSub);
pVertices[0] = vStart;
pVertices[8] = vEnd;
pVertices[4] = (vStart + vEnd)*0.5f;
pVertices[1] = vStart + vSub*0.25f;
pVertices[7] = vStart + vSub*0.75f;
Vector3 v(-vSub.y*0.25f, vSub.x*0.25f, 0.0f);
pVertices[2] = pVertices[1] + v;
pVertices[3] = pVertices[4] + v;
pVertices[5] = pVertices[4] - v;
pVertices[6] = pVertices[7] - v;
}
软件截图: