Скачиваний:
16
Добавлен:
01.05.2014
Размер:
1.96 Кб
Скачать
// TPoint.cpp: implementation of the TPoint class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ConvexHull.h"
#include "TPoint.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

#include <math.h>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

TPoint::TPoint(double _x, double _y):x(_x),y(_y)
{
	used = FALSE;
}

TPoint::~TPoint()
{

}


int TPoint::classify(TPoint & p0, TPoint & p1)
{
    TPoint p2 = *this;
    TPoint a = p1 - p0;
    TPoint b = p2 - p0;
    double sa = a.x * b.y - b.x * a.y;
    if (sa > 0.0)
       return LEFT;
    if (sa < 0.0)
       return RIGHT;
    if ((a.x * b.x < 0.0) || (a.y * b.y < 0.0))
       return BEHIND;
    if (a.length() < b.length())
       return BEYOND;
    if (p0==p2)//(p0 == p2)
       return ORIGIN;
    if (p1==p2)//(p1 == p2)
       return DESTINATION;
    return BETWEEN;
}


TPoint TPoint::operator+(TPoint& p)
{
    return TPoint(x + p.x, y + p.y);
}

TPoint TPoint::operator-(TPoint& p)
{
    return TPoint(x - p.x, y - p.y);
}

TPoint operator*(double s, TPoint& p)
{
   return TPoint(s * p.x, s * p.y);
}

double TPoint::operator[](int i)
{
   return (i == 0) ? x : y;
}

int TPoint::operator==(TPoint& p)
{
    return(x == p.x) && (y == p.y);
}

int TPoint::operator!=(TPoint& p)
{
    return !(*this == p);
}

int TPoint::operator<(TPoint& p)
{
    return ((x < p.x) || ((x==p.x) && (y < p.y)));
}

int TPoint::operator>(TPoint& p)
{
    return ((x > p.x) || ((x==p.x) && (y > p.y)));
}


double TPoint::length(void)
{
    double tmp = sqrt(x*x + y*y);
    return tmp;//sqrt(x*x + y*y);
}

int TPoint::GetType(void)
{
    return G_POINT;
}













Соседние файлы в папке ConvexHull