2011-04-09 162 views

回答

3

如果您需要可用于数值模拟的网格,那是一个中等难度的问题。如果你只需要一个表面网格的图形,这很容易。在每个圆形面的中心放置一个顶点。使用一个圆的参数方程(x = r cos t,y = r sin t)计算一系列围绕人脸边缘的节点。然后,您使用该中心节点和一对边缘节点制作一堆长长的三角形以覆盖两端。最后,想象一下围绕圆柱体两侧缠绕的一束长而瘦的矩形,由相同的节点定义;将每个对角线分成两半以形成一对三角形。

0

从最低的多边形圆柱开始 - 想象顶部的三角形和底部的三角形,每个顶点都有顶点#1,2和3.调用顶部的三角形A和底部的三角形B.创建以下多边形:

  • A1,A2,B1
  • B1,B2,A2
  • A2,A3,B2
  • B2,B3,A2
  • A3,A1,B3
  • B3,B1,A 1

换句话说:

for(int i = 0; i < vertices; i++) 
{ 
    polyList.add(circleVertices1[i], circleVertices1[(i+1) % vertices], circleVertices2[i]); 
    polyList.add(circleVertices2[i], circleVertices2[(i+1) % vertices], circleVertices1[(i+1) % vertices]); 
} 

这只是我的头顶部,但它似乎是有道理的。这不包括结尾的圈子,但我现在假设你可以找出圈子。

2

如果我们假设你真的想有良好的纵横比的三角形(各方互相成比例),要做就做最好的办法是遵循EF山的最后一个建议:

鸿沟每一个半对角地做一对三角形。

沿着圆柱体的长度会有几排三角形;它不会只是一组矩形。

关键是要从围绕周围选择你想要的数量开始。周边十周是指每个周边覆盖36度; 20将意味着每个涵盖18度。一旦你有了,选择长度的数字,以便间距等于第一维的和弦的长度。然后沿每个对角线切片以制作三角形。

顶部和底部圆柱体由三角形平铺,从圆心画出线条以满足由圆周上第一行和最后一行矩形创建的点。

根据您如何忠实地再现圆柱表面来选择数字。

0

你可以通过计算几何图形在程序上绘制一个圆柱体。如果你想用它来渲染(大多数情况下),你应该使它支持triangle stripping如果性能很重要,你也可以计算映射坐标和可能的法线。所以从头开始需要一些思考,但如果你理解数学,这是可行的。

我已经在C#中为Unity3D创建了一个模块,它完全可以做到这一点,并允许您调整参数。观看video了解详情,并从GitHub下载代码。