博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenMesh 之向量操作
阅读量:7111 次
发布时间:2019-06-28

本文共 1660 字,大约阅读时间需要 5 分钟。

OpenMesh 提供了许多可供使用的向量操作函数,使用特别方便。

 

计算距离:

从官方文档可以看到OpenMesh提供了5个函数,分别为

Scalar length() const        //compute euclidean norm 

Scalar norm() const         //compute euclidean norm 

Scalar sqrnorm() const    //compute squared euclidean norm 

Scalar l1_norm() const    //compute L1 (Manhattan) norm 

Scalar l8_norm() const   //compute l8_norm 

test:

MyMesh::Normal p(1,-1,2), q(0,1,3);    cout<<"length  :  "<<(p-q).length()<

result:

 

对于二维空间上的点(也可看做向量,起点为原点) p(x1,y1), q(x2,y2)

欧几里得距离                norm =( (x2-x1)+ (y2-y1)2

曼哈顿距离(L1距离)      l1_norm = |x2-x1| + |y2-y1|

切比雪夫距离(L距离)    l8_norm = max{|x2-x1| , |y2-y1|}

 

max & min

test:

1     MyMesh::Normal p(1,-3,2), q(0,2,4); 2     cout<<"max       :  "<
<

result:

从result来看,max 和 max_abs 很简单,不用多说。对于 p.maximize(q) 返回值是向量p与q对应位置的最大值组成的向量,而 p.maximized(q) 判断向量p是否经历了maximize,返回值为0则向量p不变,未经过maximize, 返回值为1则向量p改变,即经过maximize。

对于min,有同样的操作,不再赘述。

 

向量单位化

OpenMesh提供了三个单位化的函数

vector type & normalize()                    //normalize vector, return normalized vector

const vector type normalized()             //return normalized vector

vector type & normalize_cond()            //normalize vector, return normalized vector and avoids div by zero

外加单位化的定义(长度为1),有四种单位化方法。

test:

1     MyMesh::Normal p1(1,-3,2), p2(1,-3,2), p3(1,-3,2), p4(1,-3,2); 2  3     MyMesh::Normal q1 = p1.normalize(); 4     cout<<"p1 : "<
<<" "<
<

result:

从结果看出,1和4效果一样,1和2效果不同,需要注意!!!

 

点乘叉乘(内积外积)

 

test:

1     MyMesh::Normal p(1,-3,2), q(0,2,4);2     cout<<"dot product    : "<< (p | q) <

result:

向量 p(x1,y1,z1), q(x2,y2,z2)

点乘(内积):x1*x2 + y1*y2 + z1*z2

叉乘(外积):(y1*z2-y2*z1, x2*z1-x1*z2, x1*y2-x2*y1)   (来自行列式表示的化简,cnblog不能打公式么???)

 

转载于:https://www.cnblogs.com/VVingerfly/p/4402186.html

你可能感兴趣的文章
深入理解工厂模式
查看>>
看得见的数据结构Android版之二分搜索树篇
查看>>
实现Treeset
查看>>
Android Jetpack 助推应用开发 | 中文字幕视频介绍
查看>>
Es2016、2017新特性(上)
查看>>
聊天系统很复杂?前端工程师也能完成!
查看>>
一步一步学习JNI
查看>>
【译】 WebSocket 协议第九章——扩展(Extension)
查看>>
如何架构一个数据工程
查看>>
CSS入门指南-4:页面布局
查看>>
Kotlin——高级篇(四):集合(Array、List、Set、Map)基础
查看>>
Java并发编程之锁机制之LockSupport工具
查看>>
浅析Vue源码(四)—— $mount中template的编译--parse
查看>>
In FontFamilyFont, unable to find attribute android:font的报错处理
查看>>
基于 Scala 的产品开发实践 | 掘金技术征文
查看>>
【面经】寒冬中的一年半前端跳槽
查看>>
2018,来年只剩追忆
查看>>
React Native图片选择裁剪组件
查看>>
[翻译] 理解 CSS 布局和块级格式上下文
查看>>
Android小知识-定时任务ScheduledThreadPoolExecutor
查看>>