我不确定答案是否应该是显而易见的,但它让我望而却步。我正在使用three.js 的Udacity 上做3D 图形类。我正处于需要生成 3d 网格的地步。
我已经正确生成了所有顶点,但我一直坚持为它们生成面。我想不出一种明显的方法来自动生成不重叠的面孔。我在网上搜索和搜索,但找不到任何有关它的信息。我不确定这是否是显而易见的,或者只是没有很好的记录。这是代码:
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。但我只是想不出一种方法来做到这一点而不会重叠。我不想让任何人为我做我的工作,我想尽可能地自己弄清楚。但是有没有人可以指出我正确的方向或给我一个公式或什么的?