Changeset 81


Ignore:
Timestamp:
03/08/2012 11:10:32 AM (3 years ago)
Author:
jwentworth
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Code/oMaE/oMaE/MiniGames/heat1.cs

    r71 r81  
    2727        bool[] on;
    2828        uint src = 255;
     29        bool[] cond; //True if the user has made the pixel a conductor
     30        int condShft; //Shift amt for conductors; see multigridStep for more detail
    2931
    3032        //Dimensions
    3133        int h, w;
     34
     35        //multigrid scale parameters
     36        int gridScale;
     37        bool increasingScale;
    3238
    3339        //Indicator for whether sketchpad is set up yet (will be set up when first drawn)
     
    3642        public override void Initialize()
    3743        {
    38 
    3944            h = 500;
    4045            w = 700;
     46
     47            gridScale = 1;
     48            increasingScale = true;
     49
    4150            sketchpad = new basic_sketch(new Rectangle(0, 0, w, h)); //Leave space at right
    4251            children.Add(sketchpad);
    4352            sketchy = false;
     53
    4454            initField();
     55
    4556            base.Initialize();
    4657        }
     
    4859        public void initField()
    4960        {
     61            condShft = 2;
     62
    5063            redField = new uint[h * w];
    5164            colorField = new uint[h * w];
    5265            on = new bool[h * w];
     66            cond = new bool[h * w];
    5367            for (int i = 0; i < h * w; i++)
    5468            {
     
    5670                colorField[i] = 0xffff0000;
    5771                on[i] = false;
     72                cond[i] = false;
    5873            }
    5974            setBC();
     
    6681            {
    6782                on[r * w - 1] = true;
     83                cond[r * w - 1] = true;
    6884                redField[r * w - 1] = 0x000000ff;
    6985            }
     
    106122        public void updateField()
    107123        {
    108             int n = 1;
    109             while (n < h)
    110             {
    111                 multigridStep(n);
    112                 n *= 2;
    113             }
    114             while (n >= 1)
    115             {
    116                 multigridStep(n);
    117                 n /= 2;
    118             }
     124            multigridStep(gridScale);
     125            if (gridScale < h && increasingScale)
     126                gridScale *= 2;
     127            else if (increasingScale)
     128                increasingScale = false;
     129            else if (gridScale > 1)
     130                gridScale /= 2;
     131            else
     132                increasingScale = true;
    119133        }
    120134
Note: See TracChangeset for help on using the changeset viewer.