⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 points.h

📁 一OCR的相关资料。.希望对研究OCR的朋友有所帮助.
💻 H
字号:
/********************************************************************** * File:        points.h  (Formerly coords.h) * Description: Coordinate class definitions. * Author:					Ray Smith * Created:					Fri Mar 15 08:32:45 GMT 1991 * * (C) Copyright 1991, Hewlett-Packard Ltd. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * **********************************************************************/#ifndef           POINTS_H#define           POINTS_H#include          <stdio.h>#include          <math.h>#include          "elst.h"//#include                                      "ipeerr.h"class FCOORD;class DLLSYM ICOORD              //integer coordinate{  friend class FCOORD;  public:    ICOORD() {  //empty constructor      xcoord = ycoord = 0;       //default zero    }    ICOORD(              //constructor           INT16 xin,    //x value           INT16 yin) {  //y value      xcoord = xin;      ycoord = yin;    }    ~ICOORD () {                 //destructor    }                                 //access function    NEWDELETE2 (ICOORD) INT16 x () const    {      return xcoord;    }    INT16 y() const {  //access_function      return ycoord;    }    void set_x(  //rewrite function               INT16 xin) {      xcoord = xin;              //write new value    }    void set_y(              //rewrite function               INT16 yin) {  //value to set      ycoord = yin;    }    float sqlength() const {  //find sq length      return (float) (xcoord * xcoord + ycoord * ycoord);    }    float length() const {  //find length      return (float) sqrt (sqlength ());    }    float pt_to_pt_sqdist(  //sq dist between pts                          const ICOORD &pt) const {      ICOORD gap;      gap.xcoord = xcoord - pt.xcoord;      gap.ycoord = ycoord - pt.ycoord;      return gap.sqlength ();    }    float pt_to_pt_dist(  //Distance between pts                        const ICOORD &pt) const {      return (float) sqrt (pt_to_pt_sqdist (pt));    }    float angle() const {  //find angle      return (float) atan2 ((double) ycoord, (double) xcoord);    }    BOOL8 operator== (           //test equality    const ICOORD & other) {      return xcoord == other.xcoord && ycoord == other.ycoord;    }    BOOL8 operator!= (           //test inequality    const ICOORD & other) {      return xcoord != other.xcoord || ycoord != other.ycoord;    }    friend ICOORD operator! (    //rotate 90 deg anti      const ICOORD &);    friend ICOORD operator- (    //unary minus      const ICOORD &);    friend ICOORD operator+ (    //add      const ICOORD &, const ICOORD &);    friend ICOORD & operator+= ( //add      ICOORD &, const ICOORD &);    friend ICOORD operator- (    //subtract      const ICOORD &, const ICOORD &);    friend ICOORD & operator-= ( //subtract      ICOORD &, const ICOORD &);    friend INT32 operator% (     //scalar product      const ICOORD &, const ICOORD &);    friend INT32 operator *(  //cross product                            const ICOORD &,                            const ICOORD &);    friend ICOORD operator *(  //multiply                             const ICOORD &,                             INT16);    friend ICOORD operator *(  //multiply                             INT16,                             const ICOORD &);    friend ICOORD & operator*= ( //multiply      ICOORD &, INT16);    friend ICOORD operator/ (    //divide      const ICOORD &, INT16);                                 //divide    friend ICOORD & operator/= (ICOORD &, INT16);    void rotate(                    //rotate                const FCOORD& vec);  //by vector    void serialise_asc(  //serialise to ascii                       FILE *f);    void de_serialise_asc(  //serialise from ascii                          FILE *f);  protected:    INT16 xcoord;                //x value    INT16 ycoord;                //y value};class DLLSYM ICOORDELT:public ELIST_LINK, public ICOORD                                 //embedded coord list{  public:    ICOORDELT() {  //empty constructor    }    ICOORDELT (                  //constructor                                 //from ICOORD    ICOORD icoord):ICOORD (icoord) {    }    ICOORDELT(              //constructor              INT16 xin,    //x value              INT16 yin) {  //y value      xcoord = xin;      ycoord = yin;    }    /* Note that prep_serialise() dump() and de_dump() dont need to do anything    more than terminate recursion. */    void prep_serialise() const {  //set ptrs to counts    }    void dump(  //write external bits              FILE *) const {    }    void de_dump(  //read external bits                 FILE *) {    }                                 //serialise to ascii    make_serialise (ICOORDELT) void serialise_asc (      FILE * f);    void de_serialise_asc(  //serialise from ascii                          FILE *f);};ELISTIZEH_S (ICOORDELT)class DLLSYM FCOORD{  public:    FCOORD() {     }                            //empty constructor    FCOORD(               //constructor           float xvalue,  //coords to set           float yvalue) {      xcoord = xvalue;           //set coords      ycoord = yvalue;    }    FCOORD(                  //make from ICOORD           ICOORD icoord) {  //coords to set      xcoord = icoord.xcoord;      ycoord = icoord.ycoord;    }    float x() const {  //get coords      return xcoord;    }    float y() const {       return ycoord;    }    void set_x(  //rewrite function               float xin) {      xcoord = xin;              //write new value    }    void set_y(              //rewrite function               float yin) {  //value to set      ycoord = yin;    }    float sqlength() const {  //find sq length      return xcoord * xcoord + ycoord * ycoord;    }    float length() const {  //find length      return (float) sqrt (sqlength ());    }    float pt_to_pt_sqdist(  //sq dist between pts                          const FCOORD &pt) const {      FCOORD gap;      gap.xcoord = xcoord - pt.xcoord;      gap.ycoord = ycoord - pt.ycoord;      return gap.sqlength ();    }    float pt_to_pt_dist(  //Distance between pts                        const FCOORD &pt) const {      return (float) sqrt (pt_to_pt_sqdist (pt));    }    float angle() const {  //find angle      return (float) atan2 (ycoord, xcoord);    }    bool normalise();  //Convert to unit vec    BOOL8 operator== (           //test equality    const FCOORD & other) {      return xcoord == other.xcoord && ycoord == other.ycoord;    }    BOOL8 operator!= (           //test inequality    const FCOORD & other) {      return xcoord != other.xcoord || ycoord != other.ycoord;    }                                 //rotate 90 deg anti    friend FCOORD operator! (const FCOORD &);                                 //unary minus    friend FCOORD operator- (const FCOORD &);                                 //add    friend FCOORD operator+ (const FCOORD &, const FCOORD &);                                 //add    friend FCOORD & operator+= (FCOORD &, const FCOORD &);                                 //subtract    friend FCOORD operator- (const FCOORD &, const FCOORD &);                                 //subtract    friend FCOORD & operator-= (FCOORD &, const FCOORD &);                                 //scalar product    friend float operator% (const FCOORD &, const FCOORD &);                                 //cross product    friend float operator *(const FCOORD &, const FCOORD &);     friend FCOORD operator *(const FCOORD &, float);     //multiply    friend FCOORD operator *(float, const FCOORD &);     //multiply                                 //multiply    friend FCOORD & operator*= (FCOORD &, float);    friend FCOORD operator/ (const FCOORD &, float);    //divide    void rotate(                    //rotate                const FCOORD vec);  //by vector                                 //divide    friend FCOORD & operator/= (FCOORD &, float);  private:    float xcoord;                //2 floating coords    float ycoord;};#include          "ipoints.h"    /*do inline funcs */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -