Changeset 81

Show
Ignore:
Timestamp:
03/08/2012 11:10:32 AM (2 years ago)
Author:
jwentworth
Message:
 
Files:
1 modified

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