有了上一篇博文打下的基础,读者应该对分析查看几何图形有了初步了解,本着实用的原则,这篇文章,主要介绍Geometry的常用计算。它提供了点线面相交,相离的判断,以及多边形的布尔运算,在几何分析中非常有用,如果读者对深入学习Geometry感兴趣,需要深入学习泛型编程,作者在学习过程中也是感到深深的吃力,特别是缓冲区的代码,SDK提供的算法有时计算不出结果,详情查看注释,代码如下:
//ANormGeoLib.h--计算文件
#pragma once
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace bg = boost::geometry;
typedef bg::model::d2::point_xy DPoint; //双精度的点
typedef bg::model::segment DSegment; //线段
typedef bg::model::linestring DLineString; //多段线
typedef bg::model::box DBox; //矩形
typedef bg::model::ring DRing; //环
typedef bg::model::polygon DPolygon; //多边形
typedef bg::model::multi_polygon DMultiPolygon;//多个多边形
typedef bg::model::multi_point DMultiPoint;//多点
#define A_PI 3.141592653589793238462643383279502884197
namespace ANormGeoLib
{
// 二维空间点到直线的垂足
struct _Point
{
double x, y;
_Point(double x, double y) :x(x), y(y)
{
}
_Point() :x(0), y(0)
{
}
};
//获取垂足
inline _Point GetFootOfPerpendicular(
const _Point &pt, // 直线外一点
const _Point &begin, // 直线开始点
const _Point &end) // 直线结束点
{
_Point retVal;
double dx = begin.x - end.x;
double dy = begin.y - end.y;
if (abs(dx)
关注
打赏
热门博文
- Adobe illustrator插件开发-SPInterfaceSuite-插件A向插件B传递消息-插件通信-AI插件开发
- javascript-ztree-树形控件-初始化-加载节点数据-节点数据获取
- Adobe illustrator插件开发-坐标系统-AIHardSoftSuite-画板坐标-页面坐标-AI插件开发
- Adobe illustrator插件开发-AIUIDUtilsSuite-AIUIDPoolSuite-AIUIDSuite-AIUIDREFSuite-Art唯一标识符与索引-AI插件开发
- C++-逆向分析-类的成员函数地址与对象地址动态绑定-this指针-成员函数和成员虚函数反汇编解析
- C++-逆向分析-结构体和类-内存布局-this指针-静态数据成员-对象作为参数和返回值
- Adobe illustrator插件开发-命令名称-AddCommand -AI插件开发
- Adobe illustrator插件开发-事件-PlugPlugAddEventListener-向系统注册事件-AI插件开发
- Adobe illustrator插件开发-ole拖拽粘贴交换数据格式-RegisterClipboardFormat函数-AI插件开发
- Adobe illustrator插件开发-所有模块列表-内部存在大量非公开的Suite-AI插件开发