动态形状创建(处理中)

Dynamic Shape Creation(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

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

你实际上需要转 angle=360°/sides。并将这个角度转换成弧度。

因此,对于五角星,您需要 angle=72°。您计算出的数字是 108,按弧度解释为 34 个整圈加上大约 67° 的角度。这 低于正确的角度,因此您获得的图片有点正确,但内角稍宽,导致间隙(而不是交叉,因为当角度大于正确角度时)。