Geos提供了常见的几何对象和基本操作,但是与Boost.Geometry库一样,仅限于二维平面,无法处理三位几何体。
使用Boost.Geometry计算直线和多边形之间的交点
使用boost :: geometry的多边形法线向量
Boost :: geometry:计算多边形的质心
请教各位大佬 Boost/Geometry能否创建三维图形?
向量交点坐标公式_[单位向量,与平面交点]已知向量坐标,怎样求其与已知平面的交点…
Boost库–功能介绍–Geometry–图形开发库–计算几何–常用功能封装–GraphicalDebugging(一)
Boost库–功能介绍–Geometry–图形开发库–计算几何–常用功能封装–GraphicalDebugging(二)
boost库之geometry<二>
boost库之geometry
三维测试代码
1.定义六面体
//typedef bg::model::d2::point_xy<double> point_t;
typedef bg::model::d3::point_xyz<int> point_t;
point_t pt1,pt2,pt3,pt4,pt5,pt6,pt7,pt8;
pt1.x(-1);
pt1.y(-1);
pt1.z(0);
pt2.x(1);
pt2.y(-1);
pt2.z(0);
pt3.x(1);
pt3.y(1);
pt3.z(0);
pt4.x(-1);
pt4.y(1);
pt4.z(0);
pt5.x(-1);
pt5.y(-1);
pt5.z(1);
pt6.x(1);
pt6.y(-1);
pt6.z(1);
pt7.x(1);
pt7.y(1);
pt7.z(1);
pt8.x(-1);
pt8.y(1);
pt8.z(1);
typedef bg::model::polygon<point_t> polygon_t;
polygon_t m_hexahedron;
bg::append(m_hexahedron.outer(), pt1);
bg::append(m_hexahedron.outer(), pt2);
bg::append(m_hexahedron.outer(), pt3);
bg::append(m_hexahedron.outer(), pt4);
bg::append(m_hexahedron.outer(), pt5);
bg::append(m_hexahedron.outer(), pt6);
bg::append(m_hexahedron.outer(), pt7);
bg::append(m_hexahedron.outer(), pt8);
2.计算六面体重心
point_t pc;
boost::geometry::centroid(m_hexahedron, pc);
std::cout << "centroid m_hexahedron 1: " << boost::geometry::dsv(pc) << std::endl;
输出结果:
centroid m_hexahedron 1: (0, 0, -858993460)
可以看出z的结果明显不对
3.计算线与六面体的交点
typedef bg::model::segment<point_t> DSegment; //线段
DSegment ds;
ds.first = pt1;
ds.second = pt2;
std::vector<point_t> output1;
//bg::intersection(ds, m_hexahedron, output1);
for (int i = 0; i < output1.size(); i++)
{
std::cout << output1[i].get<0>() << " " << output1[i].get<1>() << " " << output1[i].get<2>() << std::endl;
}
编译报错
typedef bg::model::linestring<point_t> DLineString;
DLineString d1;
d1.push_back(pt1);
d1.push_back(pt8);
std::vector<point_t> output;
bg::intersection(d1, m_hexahedron, output);
for (int i = 0; i < output.size(); i++)
{
std::cout << output[i].get<0>() << " " << output[i].get<1>() << " " << output[i].get<2>() << std::endl;
}
输出结果:
-1 1 -858993460
-1 -1 0
-1 1 -858993460
z坐标对应的结果明显不对。
质心与重心
三角形质心是重心
三角形重心是三角形三条中线的交点。中线的线段将顶点连接到另一侧的中点。
连接四面体的一个顶点与所对面重心的线段,称为四面体过这个顶点的一条中线。
四面体的四条中线的交点称为这个四面体的重心。
四面体的重心就是质心。
boost.geometry库:
centroid()
计算几何图形的质心
向量转直线解析方程式
若(A,B)为直线的方向向量,则直线:Bx-Ay+C=0
若(A,B)为直线的法向量,则直线:Ax+By+C=0
高等数学入门——空间直线方程的几种常见形式