mev-4.0.01/source/org/tigr/microarray/mev/cluster/algorithm/impl/terrain/RectDT.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: RectDT.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 15:45:30 $
2 26 Feb 07 jari 9  * $Author: braistedj $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.algorithm.impl.terrain;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import javax.vecmath.Vector2f;
2 26 Feb 07 jari 15
2 26 Feb 07 jari 16 public class RectDT {
2 26 Feb 07 jari 17     
2 26 Feb 07 jari 18     public float m_Left;
2 26 Feb 07 jari 19     public float m_Top;
2 26 Feb 07 jari 20     public float m_Right;
2 26 Feb 07 jari 21     public float m_Bottom;
2 26 Feb 07 jari 22
2 26 Feb 07 jari 23     public RectDT() {
2 26 Feb 07 jari 24     }
2 26 Feb 07 jari 25
2 26 Feb 07 jari 26     public RectDT(RectDT rIn) {
2 26 Feb 07 jari 27         set(rIn);
2 26 Feb 07 jari 28     }
2 26 Feb 07 jari 29
2 26 Feb 07 jari 30     public void set(RectDT rIn) {
2 26 Feb 07 jari 31         m_Left=rIn.m_Left;
2 26 Feb 07 jari 32         m_Top=rIn.m_Top;
2 26 Feb 07 jari 33         m_Right=rIn.m_Right;
2 26 Feb 07 jari 34         m_Bottom=rIn.m_Bottom;
2 26 Feb 07 jari 35     }
2 26 Feb 07 jari 36
2 26 Feb 07 jari 37     public float Width() {
2 26 Feb 07 jari 38         return m_Right-m_Left;
2 26 Feb 07 jari 39     }
2 26 Feb 07 jari 40
2 26 Feb 07 jari 41     public float Height() {
2 26 Feb 07 jari 42         return m_Bottom-m_Top;
2 26 Feb 07 jari 43     }
2 26 Feb 07 jari 44
2 26 Feb 07 jari 45     public void NormalizeRect() {
2 26 Feb 07 jari 46         if (m_Right<m_Left) {
2 26 Feb 07 jari 47             float Tmp=m_Right;
2 26 Feb 07 jari 48             m_Right=m_Left;
2 26 Feb 07 jari 49             m_Left=Tmp;
2 26 Feb 07 jari 50         }
2 26 Feb 07 jari 51         if (m_Bottom<m_Top) {
2 26 Feb 07 jari 52             float Tmp=m_Bottom;
2 26 Feb 07 jari 53             m_Bottom=m_Top;
2 26 Feb 07 jari 54             m_Top=Tmp;
2 26 Feb 07 jari 55         }
2 26 Feb 07 jari 56     }
2 26 Feb 07 jari 57
2 26 Feb 07 jari 58     public void SetRect(Vector2f ptDLeftTop, Vector2f ptDRightBottom) {
2 26 Feb 07 jari 59         m_Left=ptDLeftTop.x;
2 26 Feb 07 jari 60         m_Top=ptDLeftTop.y;
2 26 Feb 07 jari 61         m_Right=ptDRightBottom.x;
2 26 Feb 07 jari 62         m_Bottom=ptDRightBottom.y;
2 26 Feb 07 jari 63     }
2 26 Feb 07 jari 64
2 26 Feb 07 jari 65     public void MakeEmpty() {
2 26 Feb 07 jari 66         m_Left = Float.MAX_VALUE; m_Top=Float.MAX_VALUE; m_Right=-Float.MAX_VALUE; m_Bottom=-Float.MAX_VALUE;
2 26 Feb 07 jari 67     }
2 26 Feb 07 jari 68
2 26 Feb 07 jari 69     public void IncludePoint(Vector2f rPt) {
2 26 Feb 07 jari 70         if (m_Left>rPt.x)
2 26 Feb 07 jari 71             m_Left=rPt.x;
2 26 Feb 07 jari 72         if (m_Right<rPt.x)
2 26 Feb 07 jari 73             m_Right=rPt.x;
2 26 Feb 07 jari 74         if (m_Top>rPt.y)
2 26 Feb 07 jari 75             m_Top=rPt.y;
2 26 Feb 07 jari 76         if (m_Bottom<rPt.y)
2 26 Feb 07 jari 77             m_Bottom=rPt.y;
2 26 Feb 07 jari 78     }
2 26 Feb 07 jari 79
2 26 Feb 07 jari 80     public boolean PtInRect(Vector2f rIn) {
2 26 Feb 07 jari 81         return m_Left<=rIn.x && m_Right>=rIn.x && m_Top<=rIn.y && m_Bottom>=rIn.y;
2 26 Feb 07 jari 82     }
2 26 Feb 07 jari 83
2 26 Feb 07 jari 84     public static float _hypot(float x, float y) {
2 26 Feb 07 jari 85         return(float)Math.sqrt(x*x + y*y);
2 26 Feb 07 jari 86     }
2 26 Feb 07 jari 87
2 26 Feb 07 jari 88     public float Distance(Vector2f rIn) {
2 26 Feb 07 jari 89         if (rIn.y<m_Top) {
2 26 Feb 07 jari 90             if (rIn.x<m_Left)
2 26 Feb 07 jari 91                 return(float)_hypot(rIn.x-m_Left, rIn.y-m_Top);
2 26 Feb 07 jari 92             if (rIn.x>m_Right)
2 26 Feb 07 jari 93                 return(float)_hypot(rIn.x-m_Right, rIn.y-m_Top);
2 26 Feb 07 jari 94             return m_Top-rIn.y;
2 26 Feb 07 jari 95         }
2 26 Feb 07 jari 96         if (rIn.y>m_Bottom) {
2 26 Feb 07 jari 97             if (rIn.x<m_Left)
2 26 Feb 07 jari 98                 return(float)_hypot(rIn.x-m_Left, rIn.y-m_Bottom);
2 26 Feb 07 jari 99             if (rIn.x>m_Right)
2 26 Feb 07 jari 100                 return(float)_hypot(rIn.x-m_Right, rIn.y-m_Bottom);
2 26 Feb 07 jari 101             return rIn.y-m_Bottom;
2 26 Feb 07 jari 102         } else {
2 26 Feb 07 jari 103             if (rIn.x<=m_Left)
2 26 Feb 07 jari 104                 return m_Left-rIn.x;
2 26 Feb 07 jari 105             if (rIn.x>=m_Right)
2 26 Feb 07 jari 106                 return rIn.x-m_Right;
2 26 Feb 07 jari 107         }
2 26 Feb 07 jari 108         return 0f;
2 26 Feb 07 jari 109     }
2 26 Feb 07 jari 110 }