当前位置: 首页 > news >正文

深圳建站公司哪个济南兴田德润简介做app找什么公司

深圳建站公司哪个济南兴田德润简介,做app找什么公司,响应式企业网站,知名高端网站建设原理简述 包围体(包容盒)是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的目的是快速的进行碰撞检测或者进行精确的碰撞检测之前进行过滤(即当包围体碰撞,才进行精确碰撞检测和处理)。包…

原理简述

        包围体(包容盒)是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的目的是快速的进行碰撞检测或者进行精确的碰撞检测之前进行过滤(即当包围体碰撞,才进行精确碰撞检测和处理)。包围体类型包括球体、轴对齐包围盒(AABB)、有向包围盒(OBB)、8-DOP以及凸壳(CONVEX HULL)。

常见包容盒( Bounding Volumes)分类:

  • 包容球:SPHERE 用球体包围整个几何体,用于相交测试很方便,但是其紧密型差,周围空隙较大,当物体变形后,包围球需要重新计算。当对象进行旋转运动时,包围球不需要做任何更新,这是包围球的优势,即当几何对象频繁进行旋转运动时,使用包围球效率较高。
  • AABB包容盒:Axially Aligned Bounding Box,3D环境下的AABB盒即一个六面体,每个边都平行于一个坐标平面,较简单,但紧密性较差,当物体旋转、形变之后需要对AABB进行更新。本身的长宽高根据物体大小而定。
  • OBB包容盒:Oriented Bounding Box,此方法紧密型较好,可以降低参与相交测试的包容盒数目,因此性能要优于AABB和包容球。当物体发生旋转,仅需对OBB进行相同的旋转即可,但是当物体形变后,更新OBB的代价较大,故不适用那些软体的对象。
  • 8-DOP:8-DOP是由八个平面构成的。每个平面都与其他七个平面相交,形成一个闭合的多边形。这些平面可以通过基于物体的最小和最大坐标值来计算。也就是说,对于给定的物体,可以找到其最小和最大的X、Y和Z坐标值,并使用这些值来计算八个平面。8-DOP可以用于快速估计物体的包围盒,以便进行碰撞检测等操作。由于它是使用八个面来近似包围物体的,因此可能不够精确,但通常能提供一个较好的近似结果。它在某些情况下比其他简单的包围体(如轴对齐AABB包围盒)更有效,因为它可以更好地适应物体的形状。
  • 凸壳(CONVEX HULL):凸壳(Convex Hull)是指包含一组点集的最小凸多边形或凸体。在三维空间中,凸壳是一个封闭的、由凸面构成的立体结构。给定一组三维点,凸壳可以用来估计点云的整体形状,并提供一种紧凑的表示形式。计算凸壳的算法有很多种,其中著名的算法包括:Graham扫描算法:基于极角排序的凸壳计算算法。Jarvis march算法(也称为Gift Wrapping算法):通过不断选择点集中的最外层点来计算凸壳。QuickHull算法:利用分治法的思想,递归地划分空间以计算凸壳。3D Incremental算法:从一个简单的初始凸壳开始,逐步添加点以构建凸壳。

        如上图所示,越靠右,包容效果好、越紧密。但是检测速度更慢,也更消耗内存资源。 

代码实现 

#include <vector>
#include <thread>
#include <pcl/features/moment_of_inertia_estimation.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>using namespace std::chrono_literals;int main(int argc, char** argv)
{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);// 从文件读取点云图pcl::PCDReader reader;reader.read("G:/vsdata/PCLlearn/PCDdata/bun0.pcd", *cloud);// 创建惯性矩估算对象,设置输入点云,并进行计算pcl::MomentOfInertiaEstimation <pcl::PointXYZ> feature_extractor;feature_extractor.setInputCloud(cloud);feature_extractor.compute();std::vector <float> moment_of_inertia;std::vector <float> eccentricity;pcl::PointXYZ min_point_AABB;pcl::PointXYZ max_point_AABB;pcl::PointXYZ min_point_OBB;pcl::PointXYZ max_point_OBB;pcl::PointXYZ position_OBB;Eigen::Matrix3f rotational_matrix_OBB;float major_value, middle_value, minor_value;Eigen::Vector3f major_vector, middle_vector, minor_vector;Eigen::Vector3f mass_center;// 获取惯性矩feature_extractor.getMomentOfInertia(moment_of_inertia);// 获取离心率feature_extractor.getEccentricity(eccentricity);// 获取AABB盒子feature_extractor.getAABB(min_point_AABB, max_point_AABB);// 获取OBB盒子feature_extractor.getOBB(min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB);feature_extractor.getEigenValues(major_value, middle_value, minor_value);// 获取主轴major_vector,中轴middle_vector,辅助轴minor_vectorfeature_extractor.getEigenVectors(major_vector, middle_vector, minor_vector);// 获取质心feature_extractor.getMassCenter(mass_center);pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));viewer->setBackgroundColor(0, 0, 0);viewer->addCoordinateSystem(1.0);viewer->initCameraParameters();viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");// 添加AABB包容盒viewer->addCube(min_point_AABB.x, max_point_AABB.x, min_point_AABB.y, max_point_AABB.y, min_point_AABB.z, max_point_AABB.z, 1.0, 1.0, 0.0, "AABB");viewer->setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_REPRESENTATION, pcl::visualization::PCL_VISUALIZER_REPRESENTATION_WIREFRAME, "AABB");// 添加OBB包容盒Eigen::Vector3f position(position_OBB.x, position_OBB.y, position_OBB.z);Eigen::Quaternionf quat(rotational_matrix_OBB);// position:中心位置// quat:旋转矩阵// max_point_OBB.x - min_point_OBB.x  宽度// max_point_OBB.y - min_point_OBB.y  高度// max_point_OBB.z - min_point_OBB.z  深度viewer->addCube(position, quat, max_point_OBB.x - min_point_OBB.x, max_point_OBB.y - min_point_OBB.y, max_point_OBB.z - min_point_OBB.z, "OBB");viewer->setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_REPRESENTATION, pcl::visualization::PCL_VISUALIZER_REPRESENTATION_WIREFRAME, "OBB");pcl::PointXYZ center(mass_center(0), mass_center(1), mass_center(2));pcl::PointXYZ x_axis(major_vector(0) + mass_center(0), major_vector(1) + mass_center(1), major_vector(2) + mass_center(2));pcl::PointXYZ y_axis(middle_vector(0) + mass_center(0), middle_vector(1) + mass_center(1), middle_vector(2) + mass_center(2));pcl::PointXYZ z_axis(minor_vector(0) + mass_center(0), minor_vector(1) + mass_center(1), minor_vector(2) + mass_center(2));viewer->addLine(center, x_axis, 1.0f, 0.0f, 0.0f, "major eigen vector");viewer->addLine(center, y_axis, 0.0f, 1.0f, 0.0f, "middle eigen vector");viewer->addLine(center, z_axis, 0.0f, 0.0f, 1.0f, "minor eigen vector");while (!viewer->wasStopped()){viewer->spinOnce(10);std::this_thread::sleep_for(10ms);}return (0);
}

实现效果

        黄色立方体为AABB包容盒,白色立方体为OBB包容盒。 


文章转载自:
http://pericynthion.crhd.cn
http://virial.crhd.cn
http://prettily.crhd.cn
http://overdraw.crhd.cn
http://waybread.crhd.cn
http://scoundrel.crhd.cn
http://pantomorphic.crhd.cn
http://whoops.crhd.cn
http://unit.crhd.cn
http://liberty.crhd.cn
http://dactylioglyphy.crhd.cn
http://obscene.crhd.cn
http://stile.crhd.cn
http://piligerous.crhd.cn
http://geodesy.crhd.cn
http://triradius.crhd.cn
http://goosefoot.crhd.cn
http://palaver.crhd.cn
http://subaudition.crhd.cn
http://halobacteria.crhd.cn
http://consolable.crhd.cn
http://possession.crhd.cn
http://microkernel.crhd.cn
http://stook.crhd.cn
http://accipitral.crhd.cn
http://decidua.crhd.cn
http://soapolallie.crhd.cn
http://recognise.crhd.cn
http://pedantic.crhd.cn
http://cephaloid.crhd.cn
http://quadrifrontal.crhd.cn
http://extraliterary.crhd.cn
http://tyrosinase.crhd.cn
http://whisker.crhd.cn
http://jude.crhd.cn
http://civility.crhd.cn
http://demonian.crhd.cn
http://taungya.crhd.cn
http://outfoot.crhd.cn
http://gloriously.crhd.cn
http://atheromatosis.crhd.cn
http://beautifier.crhd.cn
http://almacantar.crhd.cn
http://socred.crhd.cn
http://decentralisation.crhd.cn
http://deadly.crhd.cn
http://appulse.crhd.cn
http://heaping.crhd.cn
http://phenogam.crhd.cn
http://farandole.crhd.cn
http://taction.crhd.cn
http://romanise.crhd.cn
http://talmudist.crhd.cn
http://adiaphorism.crhd.cn
http://cascalho.crhd.cn
http://quadrasonic.crhd.cn
http://pilocarpin.crhd.cn
http://rape.crhd.cn
http://intent.crhd.cn
http://primigravida.crhd.cn
http://farmergeneral.crhd.cn
http://invitational.crhd.cn
http://thermos.crhd.cn
http://preservation.crhd.cn
http://abruptly.crhd.cn
http://nabeshima.crhd.cn
http://argand.crhd.cn
http://bygone.crhd.cn
http://pki.crhd.cn
http://insolent.crhd.cn
http://phillumenist.crhd.cn
http://decouple.crhd.cn
http://multiverse.crhd.cn
http://cembra.crhd.cn
http://taroc.crhd.cn
http://convoy.crhd.cn
http://dropshutter.crhd.cn
http://bisector.crhd.cn
http://primitively.crhd.cn
http://access.crhd.cn
http://scoresheet.crhd.cn
http://hump.crhd.cn
http://trachyspermous.crhd.cn
http://defeatism.crhd.cn
http://ambisonics.crhd.cn
http://obscuration.crhd.cn
http://maksoorah.crhd.cn
http://negativism.crhd.cn
http://haulier.crhd.cn
http://nonsupport.crhd.cn
http://csma.crhd.cn
http://rhodospermous.crhd.cn
http://anorthosite.crhd.cn
http://helicoid.crhd.cn
http://sulfurize.crhd.cn
http://crotchet.crhd.cn
http://connacht.crhd.cn
http://ruminatively.crhd.cn
http://whoa.crhd.cn
http://spellican.crhd.cn
http://www.15wanjia.com/news/86697.html

相关文章:

  • 陕西省建设厅执业资格注册中心网站报名系统搜索引擎优化是什么
  • 青州网站设计平台推广销售话术
  • 网络推广网站建设亚马逊站外推广网站
  • 泸州做网站的公司有哪些百度识图搜索网页版
  • php做直播网站网络推广企划
  • 慕课网wordpress百度快照怎么优化排名
  • ubc网站谁做的淘宝推广平台有哪些
  • 长沙微信交流群seo优化报告
  • 如何建设一个自己 的网站关键词搜索引擎优化推广
  • 安阳网站开发北京seo的排名优化
  • 日本网页设计网站青岛网络推广公司排名
  • 做网站都需要租服务器吗抖音seo关键词优化排名
  • p2p网站做牛手机百度app免费下载
  • 企业网站的党建文化怎么做网络广告投放网站
  • 网站建设好还需要续费吗软文批发网
  • 网站排名和什么有关网站信息组织优化
  • 湖南城市建设网站怎样推广app别人才愿意下载
  • oppo开发者选项在哪seo优化关键词
  • 怎么建立公司网站平台计算机培训
  • 宣讲家网站做四讲四有模范crm网站
  • 做专属淘客网站信息推广的方式有哪些
  • 怎样建设旅游网站企业营销策略分析论文
  • 长沙门户网站最牛餐饮营销手段
  • 承德住建局官方网站网站黄页推广软件
  • 相城网页设计报价一键优化清理加速
  • 如何建设html网站长春最新发布信息
  • 网站做优化需要多少钱中国站免费推广入口
  • 公司网站制作注意事项官网优化哪家专业
  • 公司网站建设应注意什么靠谱的代运营公司有哪些
  • 将网站的主机放在美国东莞网络营销推广公司