سؤال

ولقد تم العمل على ترقية بعض من التعليمات البرمجية معالجة سفري إلى جافا منتظم في نتبيانس. وحتى الآن على ما يرام، ومعظم كل شيء يعمل بشكل كبير، باستثناء عندما أذهب إلى استخدام ألوان غير تدرج الرمادي.

ولدي النصي الذي يرسم لولبي، ويجب أن تختلف الألوان في دوامة على أساس الاختيار معامل. ويبدو أن السيناريو معطلا، ومع ذلك، وأنا لا يمكن أن يفسر لماذا حقا.

وإذا كان أي شخص لديه بعض الخبرة في تصنيع وجافا، وكنت قد قل لي أين هو خطأي، وأنا أحب حقا أن تعرف.

لمن أجل استعراض الأقران، وهنا قال لي البرنامج قليلا:

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) وتبحث في وحدة التحكم جافا؟

وربما تكون هناك كمية هائلة من الانتاج وتباطؤ نهائي، ولكن يمكنك على الأقل نرى ما يحدث عندما لا شيء يبدو أن يحدث.

وماذا أفعل أعتقد أنه خطأ المنطق هو ملء إذا البيان. كل iteratation أن تقرر لون هذا التكرار وملء مع هذا اللون. فقط التكرار مع ط == 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;
  }

وآمل أن يساعد هذا.

نصائح أخرى

وشكرا لجميع من العون، ولكن أعتقد أن نهاية الهدف هو أن يساء تفسير قليلا.

وهنا صورة أنا ولدت باستخدام PDE المعالجة:

<اقتباس فقرة>   

http://www.deviantart.com/download/97026288/spiral_render_5_by_ishkur88.png

وبلدي النتيجة المرجوة يميل للنظر مماثلة لتلك، واختلاف في أصباغ والشكل العام للدوامة.

<اقتباس فقرة>   

وكما الملصق السابقة ذكر: كنت تستخدم لون غير الرمادي فقط كل ال11، ال13 وال17 التكرار

وشكرا لافتا من ذلك، لكنني أعرف بالفعل! أنا فعلا مصممة بهذه الطريقة!

والسبب هو موقف بحيث إذا لم يكن لديك الافتراضي الرمادي أن يكون الإخراج الفوضى بجنون تبحث وغير سار جدا للعين (عين لي على الأقل).

إذا كانت هناك طريقة يمكنني أن تخطي مجرد تقديم هذه الدائرة تماما، وأود بالتأكيد أن أكثر.

لنرى ما يحدث هنا إضافة

stroke(255);

وفي بداية السحب. سترى رسم جميع الدوائر المطلوبين، ولكن من دون لون. كما الملصق السابقة ذكر: كنت تستخدم لون غير الرمادي فقط كل ال11، 13th و التكرار ال17

وأعتقد أن القيم لونك هي القضية الرئيسية هنا. اعتبارا من الصفحة المرجعية

من وجهة نظر تقنية، والألوان هي 32 بت من المعلومات كما أمرت AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB حيث تحتوي على A في قيمة ألفا، وR هم الحمراء قيمة / هوى، وG خضراء / التشبع، ولB هي الأزرق / السطوع.

إذا نظرتم القيم الخاصة بك سترى قيمة ألفا منخفضة جدا، والتي هي ربما من المستحيل التمييز بين من الخلفية.

ولست متأكدا إذا كان لديك لا يزال يمثل مشكلة. أذكر لكم شنقا. هو طلقة في الظلام، ولكن أتذكر جمهورية يوغوسلافيا الاتحادية تكرار تلك الدعوة حجم () يجب أن يكون التعليمة الأولى في الإعداد (). لذلك ربما تتحرك الخلفية () الدعوة قد يساعد. لا يمكن أن يصب على أي حال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top