实现Polygon类

时间:2014-03-14 16:09:08

标签: c++

我正在编写一个包含三个类的程序:它们是pointlinepolygon。我写了前两个,但我遇到了最后一个问题。

这个类必须有两个构造函数,其中一个构造一个带有点(多边形尖端)的对象,另一个用一条线构建它。这些功能必须如下:

polygon(point** arr,int size)polygon(line** arr,int size)

我不知道为什么pointline是指针的指针? polygon类的属性是什么?如何编写polygon的构造函数?

class point
{
private:
    int first;
    int second;
public:
    point(void);
    point (int x,int y);
    point (const point& other);
    int getX();
    int getY();
    int distance(point* other);//distance of two point
    line* Line(point*);//build a line with two point
    polygon* triangle(point*,point*);//build a triangle with three point
    ~point(void);
};
point::point(void)
{
    first=0;
    second=0;
}
point::point (int x,int y)
    {
        first=x;
        second=y;
    }
point::point(const point& other)
{
    first=other.first;
    second=other.second;
}
int point::gha(int a)
{
    if(a>=0)
        return a;
    else
        return -a;
}
int point::pow(int a)
{
    return a*a;
}
int point::getX(){return first;}
int point::getY(){return second;}
int point::distance(point* other)
{
    int d= sqrt((pow(first-other->first))+(pow(second-other->second)));
    return d;
}
line* point::Line(point* other)
{
    line l(this,other);
        return &l;
}
polygon* point::triangle(point*,point*){
}

point::~point(void)
{
}
////////////////////////////
class line
{
private:
    int m;
    int c;
public:
    line(void);
    line(point*,point*);
    line(int ,point*);
    bool isParallel(line*);
    bool isPrependicular(line*);
    point* intersection(line*);
    line* parallel(point*);
    polygon* triangle(line*,line*);
    ~line(void);
};
line::line(void)
{
    m=1;
    c=0;
}
line::line(point* a,point* b)
{
    m=((a->getY())-b->getY())/(a->getX()-b->getX());
    c=a->getY()-(m*(a->getX()));
}
line::line(int dip,point* a)
{
    m=dip;
    c=a->getY()-(dip*(a->getX()));
}
bool line:: isParallel(line* other)
{
    if(m==other->m)
     return true;
    else
    return false;
}
bool line::isPrependicular(line* other)
{
    if((m*other->m)==1 || (m*other->m)==-1)
        return true;
    else
        return false;
}
point* line::intersection(line* other)
{
    int x=(other->c-c)/(m-other->m);
    int y=(m*x)+c;
    point p (x,y);
        return &p;
}
line* line::parallel(point* other)
{
    line l(m,other);
    return &l;
}
line::~line(void)
{
}
///////////////////////////////////
class polygon
{
private:
    int count;
    point* tip;
    line* l;
public:
    polygon(void);
    polygon(point** arr,int size);
    polygon(line** arr,int size);
    bool isTriangle();
    bool isSquare();
    ~polygon(void);
};

0 个答案:

没有答案