动态形状创建(处理中)
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°
的角度。这 5°
低于正确的角度,因此您获得的图片有点正确,但内角稍宽,导致间隙(而不是交叉,因为当角度大于正确角度时)。
我正在尝试创建一个程序来创建自定义模式。我有它,如果 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°
的角度。这 5°
低于正确的角度,因此您获得的图片有点正确,但内角稍宽,导致间隙(而不是交叉,因为当角度大于正确角度时)。