我不确定答案是否显而易见,但这让我困扰。我正在做Udacity上使用three.js的3D图形课程。我需要生成一个三维网格,但我卡在了生成面部分。我无法想到一种明显的自动生成不重叠面的方法。我搜索了很多网络资源,但没找到相关信息。我不知道是我太蠢看不出来还是这个问题没有被记录下来。以下是代码:
我知道计算最少面数的基本公式是n-2。但是我无法想出一种不重叠的方式来做到这一点。 我不希望有人替我完成工作,我想尽可能自己解决问题。但是否有人可以指点我正确的方向或给我一个公式之类的东西呢?
function PolygonGeometry(sides) {
var geo = new THREE.Geometry();
// generate vertices
for ( var pt = 0 ; pt < sides; pt++ )
{
// Add 90 degrees so we start at +Y axis, rotate counterclockwise around
var angle = (Math.PI/2) + (pt / sides) * 2 * Math.PI;
var x = Math.cos( angle );
var y = Math.sin( angle );
// YOUR CODE HERE
//Save the vertex location - fill in the code
geo.vertices.push( new THREE.Vector3(x, y, 0) );
}
// YOUR CODE HERE
// Write the code to generate minimum number of faces for the polygon.
// Return the geometry object
return geo;
}
我知道计算最少面数的基本公式是n-2。但是我无法想出一种不重叠的方式来做到这一点。 我不希望有人替我完成工作,我想尽可能自己解决问题。但是否有人可以指点我正确的方向或给我一个公式之类的东西呢?
THREE.ShapeUtils.triangulateShape()
函数进行三角剖分。 - Avatar