浏览代码

easymesh: minor torus mesh tweaks.

legacy
Sam Hocevar sam 12 年前
父节点
当前提交
caba2eb28f
共有 1 个文件被更改,包括 10 次插入8 次删除
  1. +10
    -8
      src/easymesh/easymesh.cpp

+ 10
- 8
src/easymesh/easymesh.cpp 查看文件

@@ -511,21 +511,23 @@ void EasyMesh::AppendSphere(int ndivisions, vec3 const &size)
void EasyMesh::AppendTorus(int ndivisions, float r1, float r2) void EasyMesh::AppendTorus(int ndivisions, float r1, float r2)
{ {
int ibase = m_indices.Count(); int ibase = m_indices.Count();
int nidiv = ndivisions; /* Cross-section */
int njdiv = ndivisions; /* Full circumference */


for (int j = 0; j < ndivisions; j++) for (int j = 0; j < njdiv; j++)
for (int i = 0; i < ndivisions; i++) for (int i = 0; i < 2 * nidiv; i++)
{ {
for (int di = 0; di < 2; di++) for (int di = 0; di < 2; di++)
for (int dj = 0; dj < 2; dj++) for (int dj = 0; dj < 2; dj++)
{ {
int i2 = (i + di) % ndivisions; int i2 = (i + di) % nidiv;
int j2 = (j + dj) % ndivisions; int j2 = (j + dj) % njdiv;
float x = 0.5f * (r1 + r2) + 0.5 * (r2 - r1) * lol::cos(2.0 * M_PI * i2 / ndivisions); float x = 0.5f * (r1 + r2) + 0.5 * (r2 - r1) * lol::cos(2.0 * M_PI * i2 / nidiv);
float y = 0.5f * (r2 - r1) * lol::sin(2.0 * M_PI * i2 / ndivisions); float y = 0.5f * (r2 - r1) * lol::sin(2.0 * M_PI * i2 / nidiv);
float z = 0.0f; float z = 0.0f;


float ca = lol::cos(2.0 * M_PI * j2 / ndivisions); float ca = lol::cos(2.0 * M_PI * j2 / njdiv);
float sa = lol::sin(2.0 * M_PI * j2 / ndivisions); float sa = lol::sin(2.0 * M_PI * j2 / njdiv);
float x2 = x * ca - z * sa; float x2 = x * ca - z * sa;
float z2 = z * ca + x * sa; float z2 = z * ca + x * sa;




||||||
x
 
000:0
正在加载...
取消
保存