资源简介
C++语言实现一些基本算法(两点距离、点是否在直线上、点与直线的关系、两直线的夹角、两直线的交点、两个举行的重合面积等等)
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
#define PI 3.141592653
struct QUICKSORT
{
int iIndex;
float fAngle;
QUICKSORT(int iIndex float fAngle)
{
this->iIndex = iIndex;
this->fAngle = fAngle;
}
QUICKSORT() {memset(this 0 sizeof(*this));}
};
//定义点结构体
struct myPoint
{
int x; //点的x坐标
int y; //点的y坐标
myPoint(){memset(this 0 sizeof(*this));}
myPoint(int x int y)
{
this->x = x;
this->y = y;
}
bool operator==(const myPoint &other) const
{
return (this->x == other.x && this->y == other.y);
}
};
/********************************************************************
* 函数名称 : segmentLength
* 函数功能 : 求两点的长度(勾股定理)
* 输入参数1: pt1 第一个点
* 输入参数2: pt2 第二个点
* 输出参数: 无
* 返回参数: pt1到pt2的距离
* 日 期: 2018年09月13日
* 作 者: mark-plus
********************************************************************/
float segmentLength(const myPoint &pt1 const myPoint &pt2)
{
float x = fabs(pt1.x - pt2.x);
float y = fabs(pt1.y - pt2.y);
float fLength = sqrt((x * x + y * y));
return fLength;
}
/********************************************************************
* 函数名称 : pointOnSegment
* 函数功能 : 判断点是否在线段上
* 输入参数1: pt1 线段的第一个点
* 输入参数2: pt2 线段的第二个点
* 输入参数3: ptNode 需要判断的点
* 输出参数: 无
* 返回参数: true:点ptNode在线段上 false:点ptNode在在线段上
* 日 期: 2018年09月13日
* 作 者: mark-plus
********************************************************************/
bool pointOnSegment(const myPoint &pt1 const myPoint &pt2 const myPoint &ptNode)
{
float a = segmentLength(pt1 pt2);
float b= segmentLength(pt1 ptNode);
float c= segmentLength(pt2 ptNode);
if (a == (b +c)) return true;
else return false;
}
/********************************************************************
* 函数名称 : pointOnSegmentOutSide
* 函数功能 : 判断某个点是否在线段外
* 输入参数1: pt1 线段的第一个点
* 输入参数2: pt2 线段的第二个点
* 输入参数3: ptNode 需要判断的点
* 输出参数: 无
* 返回参数: true:点ptNode在线外 false:点ptNode在线上
* 日 期: 2018年09月13日
* 作 者: mark-plus
********************************************************************/
bool pointOnSegmentOutSide(const myPoint pt1 const myPoint pt2 const myPoint ptNode)
{
float a = segmentLength(pt1 pt2);
float b= segmentLength(pt1 ptNode);
float c= segmentLength(pt2 ptNode);
if (b > a || c > a) return false;
else return true;
}
/********************************************************************
* 函数名称 : intersect
* 函数功能 : 求两直线的交点(参考了Qt里面两直线求交点的算法)
* 输入参数1: pt1 直线1的第1个点
* 输入参数2: pt2 直线1的第2点
* 输入参数3: pt3 直线2的第1个点
* 输入参数4: pt4 直线2的第2个点
* 输出参数: ptNode 直线1和直线2的交点
* 返回参数: true:直线1和直线2有交点 false:true:直线1和直线2没有交点
* 日 期: 2018年09月13日
* 作 者: mark-plus
********************************************************************/
bool intersect(const myPoint &pt1 const myPoint &pt2 const myPoint &pt3 const myPoint &pt4 myPoint &ptNode)
{
myPoint a(pt2.x - pt1.x pt2.y - pt1.y);
myPoin
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-09-14 17:47 algorithm\
文件 26 2018-09-14 14:29 algorithm\algorithm.pro
文件 14177 2018-09-14 17:47 algorithm\algorithm.pro.user
文件 24956 2018-09-14 16:13 algorithm\main.cpp
- 上一篇:C++编写的类似水果忍者的切水果的效果
- 下一篇:C语言模糊控制程序
评论
共有 条评论