Java 加工过程中旋转平面周围的拉丝点出现问题?

Java 加工过程中旋转平面周围的拉丝点出现问题?,java,processing,Java,Processing,我正在制作一个脚本原型,在旋转平面上绘制等间距的点,处理过程会产生意想不到的结果吗 这是我的代码: int WHITE = 255; int BLACK = 0; void setup() { size(500, 500); } void draw() { background(WHITE); translate(width/2, height/2); // move origin to center of window // center ellipse

我正在制作一个脚本原型,在旋转平面上绘制等间距的点,处理过程会产生意想不到的结果吗

这是我的代码:

int WHITE = 255;
int BLACK = 0;

void setup() {
    size(500, 500);
}

void draw() {
    background(WHITE);
    translate(width/2, height/2); // move origin to center of window

    // center ellipse
    noStroke();
    fill(255, 0, 0);
    ellipse(0, 0, 10, 10); // center point, red

    // satellite ellipses
    fill(BLACK);
    int points = 4;
    for (int i = 0; i < points; i++) {
        rotate(i * (TWO_PI / points));
        ellipse(0, 100, 10, 10); // after plane rotation, plot point of size(10, 10), 100 points above y axis
    }
}
当点=4时,我得到了我期望的结果,但是当点=5//当点=3或>4时,我得到了一个缺少打印点但仍然正确间隔的结果


为什么会发生这种情况?

你旋转得太多:你不想在每次迭代时都旋转i*角,因为如果我们这样做,我们旋转得太多以至于点重叠。例如,在代码保持不变的情况下,对于3个点,我们希望将它们放置在0度、120度和240度或120度、240度和360度。但事实并非如此:

当i=0时,我们旋转0度。到现在为止,一直都还不错。 当i=1时,我们在0的顶部旋转120度。还不错。 当i=2时,我们在120的顶部旋转240度。那太远了120度! 这显然不是我们想要的,所以只要旋转固定角度的TAU/点,事情就会按预期进行:

for (int i = 0; i < points; i++) {
  rotate(TAU / points);
  ellipse(0, 100, 10, 10);
}

记住,处理有一个实际的颜色类型,所以color WHITE=color255比int好。啊,这样一个基本的错误,多么令人尴尬。谢谢
float x = 0, y = 100, nx, ny, angle;
for (int i = 0; i < points; i++) {
  angle = i * TAU / points;
  nx = x * cos(a) - y * sin(a);
  ny = x * sin(a) + y * cos(a); 
  ellipse(nx, ny, 10, 10);
}