最近遇到个任务,需要求点云数据中目标点与其邻接点的投影点的最大夹角,网上找了很多资料,多数都是计算0-π范围内的夹角,没找到如何判断0-2π夹角的方法,这里我通过查找到的资料,总结出一个计算0-2π范围夹角的方法,尽量讲的通俗简单点。
一、将邻接点投影到目标点的切平面
根据目标点坐标与目标点的法向量,计算出切平面,再将邻接点投影到切平面。这里网上很多资料,就不做过多介绍。
二、计算投影点与目标点的夹角大小
设目标点为v,以pi表示第i个邻接点的投影点。v与每个投影点pi相连形成向量vpi。
我们的目标是计算相邻vpi间夹角的最大值。
总体思路是选出第一个向量vp0作为基准向量,计算其他向量vpi在某一个时针方向上(如逆时针方向)与vp0形成的夹角,将这些夹角由小到大排列,排列完毕后相邻大小的夹角相减,得到的就是相邻vpi间的夹角。
已知向量坐标求向量夹角可以用如下点乘公式求得,
但是这个方法求得的θ值范围是0-π之间的,而我们需要的是0-2π范围的夹角,可以利用叉乘的方法来解决这个问题。
叉乘相关知识:https://www.cnblogs.com/zzdyyy/p/7643267.html
在叉乘的知识链接中,我们看到根据右手螺旋法则,向量a叉乘向量b所得的向量a×b是垂直向上的,此时向量b在向量a的逆时针方向上的夹角小于π(假设在逆时针方向上向量a与b的夹角为θ,则在顺时针方向上向量a与向量b的夹角为2π-θ)。若此时该平面中还有一条向量c,将向量a与向量c叉乘,若所得的向量a×c方向与a×b相同,则c与b一样在a的逆时针方向上的夹角小于π,若所得的向量a×c方向与a×b相反,则c在a的逆时针方向上夹角大于π。
回到我们的点云中。
设向量vp0×vp1得向量v1,vp0×vpi得向量vi,vp0与vpi由点乘公式计算得到的夹角为θi。计算v1与vi的夹角,若夹角为锐角,则vp0与vpi的夹角为θi,若v1与vi的夹角为钝角,则vp0与vpi的夹角为2π-θi。
将计算所得的角度与2π(画个图很容易明白为什么要将2π也加入进去,就不解释了)一起按从小到大进行排序,将相邻的角度相减,其中最大的值就是我们要求的三维点云中目标点与其邻接点的投影点的最大夹角。
tomcat安装目录的conf目录下server.xml文件中配置 :docBase:war包放置的目录路径path:web网页访问项目的目录设置reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重
06 数据备份与恢复 实验报告 广州大学学生实验报告 开课学院及实验室:计算机科学与工...
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变量存放
InetAddress ip4 = Inet4Address.getLocalHost(); System.out.println(ip4.getHostAddress());
在查看browse directory时,点击tmp,无法进入,报错:“Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp":student:supergroup:drwx------”。有tmp和user,但tmp的权限是drwx------,而user的权限是drwxr-xr-x文件权限第一个d是目录的意思,...
k8s自动化持续集成之GitLab CI/CD前言持续集成的好处主要有两个: 快速发现错误 每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易 防止分支大幅偏离主干 如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,...
http://blog.sina.com.cn/s/blog_48c7729a0100ws2t.html
公司新到了一台三层交换机,想在GNS3中先测试一下,无奈发现GNS3没有三层交换机,不过可以用路由器加载交换模块模拟三层交换机使用。不清楚各个模块具有什么功能,特地去查询了一下,得到以下结论:NM开头的bai都是CISCO低端路由器模块,后面接的是端口数量及du大的类型,再后面zhi类型详细指定NM-16ESM 16端口10/100快速以太网交换机网dao络模块NM-1E 1端口10bT以太网网络模块NM-IFE-TX 1端口100bTX快速以太网网络模块NM-4E 4端口10bT以太网网络模
tar zxvf pcre-8.34.tar.bz2出错,提示gzip: stdin: not in gzip formattar: Child returned status 1tar: Error is not recoverable: exiting now更换zxvf,直接tar -xf 就可以了
E5 调用API续订服务:Microsoft 365 E5 Renew X:功能性:网页访问部分继承于Microsoft 365 E5 Renew Web并做了部分改进,数据库改进现在支持单用户多运行账号;内核API调用继承于Microsoft 365 E5 Renew Plus;可部署性:支持开放站点部署和私享部署,私享部署不再强制要求配置Https和OAuth平台兼容性:使用Asp.Net Core 作为跨平台框架增适用于 Windows Linux MacOS...
很高兴向大家宣布,Verge3D 2.12 for 3ds Max版本已发布。在本次更新中,我们重新设计了几个示例应用程序;添加了许多新的拼图;实现了超级采样和多重采样抗锯齿;引入了功能强大的Tween.js库,用于创建精美的程序动画;启用了WebGL 2.0;为虚拟现实添加了新功能;更新了Verge3D WordPress插件,增加了一些新功能。示例应用自定义图形(Custom Image)...
组网距离的问题在z-stack 2.4中,修改发射功率的方法和老版本已经不一样了。修改发射功率的方法如下:打开mac_radio_defs.h,找到文件最后面的这段代码:/* ------------------------------------------------------------------------------------------------* Transmit Power