测试处理2.2.1& OS X上的3.0a2。
我在下面调整的代码可能看起来很熟悉,这是Imgur现在用作加载动画的内容。它发布在OpenProcessing.org上,我已经能够在Processing中使用它,但是弧线一直在摇摆(1像素内的相对移动)。我是Processing的新手,我在草图中看不到可能导致这种情况的任何内容,它在ProcessingJS中运行时没有问题(尽管CPU利用率非常高)。
int num = 6;
float step, spacing, theta, angle, startPosition;
void setup() {
frameRate( 60 );
size( 60, 60 );
strokeWeight( 3 );
noFill();
stroke( 51, 51, 51 );
step = 11;
startPosition = -( PI / 2 );
}
void draw() {
background( 255, 255, 255, 0 );
translate( width / 2, height / 2 );
for ( int i = 0; i < num; i++ ) {
spacing = i * step;
angle = ( theta + ( ( PI / 4 / num ) * i ) ) % PI;
float arcEnd = map( sin( angle ), -1, 1, -TWO_PI, TWO_PI );
if ( angle <= ( PI / 2 ) ) {
arc( 0, 0, spacing, spacing, 0 + startPosition , arcEnd + startPosition );
}
else {
arc( 0, 0, spacing, spacing, TWO_PI - arcEnd + startPosition , TWO_PI + startPosition );
}
}
arc( 0, 0, 1, 1, 0, TWO_PI );
theta += .02;
}
如果有帮助,我会尝试将其导出为动画GIF。我尝试使用ProcessingJS和jsgif这样做,但遇到了一些障碍。我可以使用gifAnimation将它导出到Processing中。
更新
看起来我跟hint( ENABLE_STROKE_PURE );
一起使用,strokeCap( SQUARE );
内的setup()
进行了清理。它看起来与原版看起来不一样,但我确实喜欢直边。有时候当你妥协时,结果甚至会超过理想的#34;溶液
答案 0 :(得分:4)
我在OS X上看到了2.2.1的问题,并在hint(ENABLE_STROKE_PURE)
中调用setup()
为我修复了它。但是,我找不到这个电话的好文件;它只是在这里和那里被提及的东西。
至于根本原因,如果我绝对不得不推测,我猜想Processing的Java渲染器使用带有少量控制点的样条曲线近似圆弧。控制点在端点之间间隔开,因此端点移动,近似中的凸起也移动。对于单个帧,近似可能足够好,但动画使得凸起明显。设置ENABLE_STROKE_PURE
可能会增加控制点的数量,或者它可能会强制Processing在其构建的基础图形库中使用更昂贵的圆弧基元。但是,这只是一个猜测,为什么绘图环境可能有像你看到的那样的bug。我没有阅读Processing的源代码来验证猜测。