Page 220 - The Definitive Guide to Building Java Robots
P. 220

Preston_5564C06.fm  Page 201  Friday, September 23, 2005  5:13 AM



                                                                                   CHAPTER 6  ■  VISION  201



                            public int getGreenMin(Color c) {
                                return getColor(c, 8);
                            }


                            public int getGreenMax(Color c) {
                                return getColor(c, 12);
                            }


                            public int getBlueMin(Color c) {
                                return getColor(c, 16);
                            }


                            public int getBlueMax(Color c) {
                                return getColor(c, 20);
                            }

                            public double getIndex(int index) {
                                return colorGram[index];
                            }
                            public void setMins(int[] mins) {
                                colorGram[3] = mins[0]; // red
                                colorGram[3+8] = mins[1]; // green
                                colorGram[3+16] = mins[2]; // blue
                            }

                            public void setMaxs(int[] maxs) {
                                colorGram[7] = maxs[0]; // red
                                colorGram[7+8] = maxs[1]; // green
                                colorGram[7+16] = maxs[2]; // blue
                            }

                            // column == r,g,b if primary color
                            // row = r,g,b of secondary color
                            // constant value
                            public void setRatio(int column, int row, double value) {
                                // rows will be 2,4,6
                                colorGram[(column + ((row-1)*4))-1] = 1;
                                colorGram[(row*4) -1] = value;
                            }



                            private int getColor(Color c, int index) {
                                int out = (int) (c.getRed() * colorGram[index]
                                        + c.getGreen() * colorGram[index + 1]
                                        + c.getBlue() * colorGram[index + 2]
                                        + colorGram[index + 3]);
   215   216   217   218   219   220   221   222   223   224   225