oaVector.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaVector.hpp
00004 //
00005 // This file contains the definition for the oaVector class. This class
00006 // implements a 2-D vector.
00007 //
00008 // *****************************************************************************
00009 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00010 // Integration Initiative, this material may not be copied, modified,
00011 // re-published, uploaded, executed, or distributed in any way, in any medium,
00012 // in whole or in part, without prior written permission from Cadence.
00013 //
00014 //                Copyright 2002-2005 Cadence Design Systems, Inc.
00015 //                           All Rights Reserved.
00016 //
00017 //  $Author: icftcm $
00018 //  $Revision: #1 $
00019 //  $Date: 2010/08/09 $
00020 //  $State: Exp $
00021 // *****************************************************************************
00022 // *****************************************************************************
00023 
00024 
00025 
00026 #if !defined(oaVector_P)
00027 #define oaVector_P
00028 
00029 
00030 
00031 // *****************************************************************************
00032 // Nested includes
00033 // *****************************************************************************
00034 #include "oaPoint.h"
00035 
00036 
00037 
00038 // *****************************************************************************
00039 // Declare and define types in the OpenAccess namespace.
00040 // *****************************************************************************
00041 BEGIN_OA_NAMESPACE
00042 
00043 
00044 
00045 // *****************************************************************************
00046 // Forward Public Class Declarations
00047 // *****************************************************************************
00048 class oaPoint;
00049 
00050 template <class T>
00051 class oaChecker;
00052 
00053 
00054 
00055 // *****************************************************************************
00056 // oaVector
00057 // *****************************************************************************
00058 class OA_BASE_DLL_API oaVector {
00059 public:
00060                             oaVector();
00061                             oaVector(oaOffset   xValIn,
00062                                      oaOffset   yValIn);
00063                             oaVector(const oaPoint &head);
00064                             oaVector(const oaPoint  &tail,
00065                                      const oaPoint  &head);
00066 
00067     oaOffset                &x();
00068     oaOffset                &y();
00069     oaOffset                x() const;
00070     oaOffset                y() const;
00071 
00072     void                    set(const oaPoint   &tail,
00073                                 const oaPoint   &head);
00074     void                    setLength(const oaInt4 length);
00075 
00076     oaInt4                  getLength() const;
00077 
00078     oaBoolean               leftOf(const oaVector &ref) const;
00079     oaBoolean               rightOf(const oaVector &ref) const;
00080 
00081     void                    rotate90();
00082     void                    rotate180();
00083     void                    rotate270();
00084 
00085     void                    addToPoint(const oaPoint    &start,
00086                                        oaPoint          &result) const;
00087     void                    subFromPoint(const oaPoint  &start,
00088                                          oaPoint        &result) const;
00089 
00090     oaBoolean               intersects(const oaPoint    &ref,
00091                                        const oaVector   &other,
00092                                        const oaPoint    &otherRef,
00093                                        oaPoint          &iPt) const;
00094 
00095     oaDouble                operator*(const oaVector &v) const;
00096     oaBoolean               operator==(const oaVector &v) const;
00097     oaBoolean               operator!=(const oaVector &v) const;
00098 
00099     void                    normalize();
00100     oaDouble                getCosAngle(const oaVector &v) const;
00101 
00102 private:
00103     oaOffset                xVal;
00104     oaOffset                yVal;
00105 
00106     friend class oaChecker<oaVector>;
00107 };
00108 
00109 
00110 
00111 END_OA_NAMESPACE
00112 
00113 #endif

Return to top of page