// Program: 3055 // Author: Manuel J. A. Eugster ( e0126312@student.tuwien.ac.at ) // FileId: $Id: RGBRectangle.java,v 1.1.1.1 2001/12/10 18:56:04 heder Exp $ import java.lang.*; import RGBVector; // CLASS: // Rectangle around a real point. Corner points are the // reduced points. // public class RGBRectangle { private RGBVector [] vCornerPoints; // Rectangle corner points private RGBVector vRealPoint; // Real point // METHOD: // Constructor. // public RGBRectangle( RGBVector vPoint, int [] iRGBRed ) { this.vRealPoint = vPoint; this.vCornerPoints = new RGBVector[8]; this.vCornerPoints[0] = new RGBVector( iRGBRed[0], iRGBRed[1], iRGBRed[2] ); this.vCornerPoints[1] = new RGBVector( iRGBRed[0], iRGBRed[1], iRGBRed[5] ); this.vCornerPoints[3] = new RGBVector( iRGBRed[0], iRGBRed[4], iRGBRed[2] ); this.vCornerPoints[2] = new RGBVector( iRGBRed[0], iRGBRed[4], iRGBRed[5] ); this.vCornerPoints[4] = new RGBVector( iRGBRed[3], iRGBRed[1], iRGBRed[2] ); this.vCornerPoints[5] = new RGBVector( iRGBRed[3], iRGBRed[1], iRGBRed[5] ); this.vCornerPoints[7] = new RGBVector( iRGBRed[3], iRGBRed[4], iRGBRed[2] ); this.vCornerPoints[6] = new RGBVector( iRGBRed[3], iRGBRed[4], iRGBRed[5] ); } // METHOD: // Calculates the real distance between the real point an the // rectangle corner points. // public double [] realDistance() { RGBVector vDiff = new RGBVector( 0, 0, 0); // Difference corner point real point double [] dRealDist = new double[8]; // Vector length // Calculate length real point - corner point // for ( int i = 0; i < 8; i++ ) { vDiff = vCornerPoints[i].sub( vRealPoint ); dRealDist[i] = Math.sqrt( vDiff.getCoordR() * vDiff.getCoordR() + vDiff.getCoordG() * vDiff.getCoordG() + vDiff.getCoordB() * vDiff.getCoordB() ); } java.util.Arrays.sort( dRealDist ); // Sort array ( small -> big ) return( dRealDist ); } // METHOD: // Uses the method realDistance() to calculate the normalized // distance between real point and rectangle corner points. // public double [] normDistance() { double [] dNormDist = new double[8]; // Normalized distances double [] dRealDist = this.realDistance(); // Real distances double dSum = 0d; // Sum of real distances // Calculate sum // for ( int i = 0; i < 8; i++ ) { dSum += dRealDist[i]; } // Calculate normalized distance // for ( int i = 0; i < 8; i++ ) { dNormDist[i] = dRealDist[i] / dSum; } java.util.Arrays.sort( dNormDist ); // Sort array ( small -> big ) return( dNormDist ); } }