动态形状创建(处理)

时间:2015-04-24 14:59:59

标签: math image-processing processing

我正在尝试创建一个创建自定义模式的程序。我有它,所以如果sides = 3,它是一个三角形4 = rect和上面的任何其他东西都有一个公式,所以,如果你真的想要,你可以有25个边。我使用线条,旋转和旋转来种植,转动,画出重复。

 angleMeasure = (180 * (sides-2) ) /sides;
 println(angleMeasure);
 println(radians(angleMeasure));
 //creating the 5+ shape
 pushMatrix();
 translate(width/2, height/2); //translating the whole shape/while loop

 while(counter < sides){

   line(0,0,170,0);
   translate(170,0);//THIS translate is what makes the lines go in the direction they need too.
   rotate(angleMeasure);

 counter = counter + 1;

这几乎正常。最后一行和第一行没有连接。建议?也许这是数学上的一个问题,但是println会以度为单位显示正确的角度测量值。这是它的样子:http://i.stack.imgur.com/TwYMj.png

编辑:将旋转从旋转(angleMeasure)更改为旋转(angleMeasure * -1)。这使整个形状旋转,并清楚地表明第一条线上的角度是关闭的。见:http://i.stack.imgur.com/Z1KmY.png

1 个答案:

答案 0 :(得分:1)

你实际上需要转过angle=360°/sides。并将此角度转换为弧度。

因此,对于五角星,你需要angle=72°。您计算的数字是108,解释为弧度为34个完整转弯加上大约67°的角度。这比正确的角度低,因此您可以获得稍微正确的图像,内角稍微过宽,从而产生间隙(而不是当角度大于正确角度时的交叉)。 / p>