Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加工过程中颜色的变化_Java_Colors_Processing_Spiral - Fatal编程技术网

Java 加工过程中颜色的变化

Java 加工过程中颜色的变化,java,colors,processing,spiral,Java,Colors,Processing,Spiral,我一直在努力将一些处理代码移植到NetBeans中的常规Java。到目前为止,除了我使用非灰度颜色外,大多数东西都很好用 我有一个脚本,绘制了一个螺旋模式,并应根据模数检查改变螺旋中的颜色。然而,剧本似乎悬而未决,我无法真正解释原因 如果有人有处理和Java方面的经验,你可以告诉我我的错误在哪里,我真的很想知道 为了便于同行评审,以下是我的小计划: package spirals; import processing.core.*; public class Main extends PApp

我一直在努力将一些处理代码移植到NetBeans中的常规Java。到目前为止,除了我使用非灰度颜色外,大多数东西都很好用

我有一个脚本,绘制了一个螺旋模式,并应根据模数检查改变螺旋中的颜色。然而,剧本似乎悬而未决,我无法真正解释原因

如果有人有处理和Java方面的经验,你可以告诉我我的错误在哪里,我真的很想知道

为了便于同行评审,以下是我的小计划:

package spirals;
import processing.core.*;

public class Main extends PApplet
{
    float x, y;
    int i = 1, dia = 1;

    float angle = 0.0f, orbit = 0f;
    float speed = 0.05f;

    //color palette
    int gray = 0x0444444;
    int blue = 0x07cb5f7;
    int pink = 0x0f77cb5;
    int green = 0x0b5f77c;

    public Main(){}

    public static void main( String[] args )
    {
        PApplet.main( new String[] { "spirals.Main" } );
    }

    public void setup()
    {
        background( gray );
        size( 400, 400 );
        noStroke();
        smooth();
    }

    public void draw()
    {
        if( i % 11 == 0 )
            fill( green );
        else if( i % 13 == 0 )
            fill( blue );
        else if( i % 17 == 0 )
            fill( pink );
        else
            fill( gray );

        orbit += 0.1f; //ever so slightly increase the orbit
        angle += speed % ( width * height );

        float sinval = sin( angle );
        float cosval = cos( angle );

        //calculate the (x, y) to produce an orbit
        x = ( width / 2 ) + ( cosval * orbit );
        y = ( height / 2 ) + ( sinval * orbit );

        dia %= 11; //keep the diameter within bounds.
        ellipse( x, y, dia, dia );
        dia++;
        i++;
    }
}

您是否考虑过添加调试语句(System.out.println)并查看Java控制台

可能会有大量的产出和明显的减速,但你至少可以看到当什么都没有发生时会发生什么

我认为一个逻辑错误是填充if语句;在每次迭代中,您决定该迭代的颜色并用该颜色填充。只有i==11、13或17的迭代才会填充颜色。在下一次迭代中,颜色被灰色覆盖。我会认为它会闪烁,可能会快到看不见

你不想要像这样的东西吗

public class Main extends PApplet
{
  ...

  int currentColor = gray;

  public Main(){}

  ...

  public void draw()
    {
        if( i % 11 == 0 )
           currentColor = green;
        else if( i % 13 == 0 )
           currentColor = blue;
        else if( i % 17 == 0 )
           currentColor = pink;
        else {
           // Use current color
        } 

        fill(currentColor);

        ...
}
  else if ( i % 19 ) {
    currentColor = gray;
  }
这样,你从灰色开始,到绿色、蓝色、粉色、绿色、蓝色、粉色等等 如果你想在某个时候看到灰色,你必须添加如下内容

public class Main extends PApplet
{
  ...

  int currentColor = gray;

  public Main(){}

  ...

  public void draw()
    {
        if( i % 11 == 0 )
           currentColor = green;
        else if( i % 13 == 0 )
           currentColor = blue;
        else if( i % 17 == 0 )
           currentColor = pink;
        else {
           // Use current color
        } 

        fill(currentColor);

        ...
}
  else if ( i % 19 ) {
    currentColor = gray;
  }

希望这有帮助。

要了解这里发生了什么,请添加

stroke(255);
在抽签开始时。您将看到所有想要绘制的圆,但没有颜色。正如前面的海报所提到的:您仅在第11、13和17次迭代中使用非灰色

我认为你的颜色值是这里的主要问题。从参考页开始

从技术角度来看,颜色是32位信息,按aaaaaaaa rrrrrrrrrr ggggggggggbbbbbbbbbb排序,其中a包含alpha值,R表示红色/色调值,G表示绿色/饱和度,B表示蓝色/亮度


如果您查看您的值,您将看到一个非常低的alpha值,这可能无法与背景区分。

不确定您是否仍然存在问题。你提到绞刑。这是瞎猜,但我记得fry重复的size()调用必须是setup()中的第一条指令。因此,向下移动background()调用可能会有所帮助。反正也不会受伤