我不确定答案是否应该是令人目眩的明显,但它让我望而却步.我在Udacity上使用three.js做3D Graphics类.我正处于需要生成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.但是我没想到没有面部重叠的方法.我不希望任何人为我做我的工作,我想尽可能多地弄清楚自己.但有没有人可以指出我正确的方向或给我一个公式或什么?
解决方法
假设您以凹面方式和逆时针方式生成顶点,那么如果您有3个边(三角形),则将顶点0与1连接为2.如果有4个边(四边形),则将顶点0与1连接为2(第一个三角形)然后是顶点0和2和3.如果你有5个边(五边形)你连接顶点0和1与2(第一个三角形)然后顶点0连接2和3(第二个三角形然后顶点0和3和4)我认为你得到的模式.