OpenMesh 之向量操作

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()<<endl;
    cout<<"norm    :  "<<(p-q).norm()<<endl;
    cout<<"sqrnorm :  "<<(p-q).sqrnorm()<<endl;
    cout<<"l1_norm :  "<<(p-q).l1_norm()<<endl;
    cout<<"l8_norm :  "<<(p-q).l8_norm()<<endl;

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       :  "<<p.max()<<endl;
 3     cout<<"max_abs   :  "<<p.max_abs()<<endl;
 4
 5     cout<<"maximize  :  "<<p.maximize(q)<<endl;
 6     cout<<p<<endl<<q<<endl;
 7     cout<<"maximized :  "<<p.maximized(q)<<endl;
 8     cout<<p<<endl<<q<<endl;
 9     cout<<"maximized :  "<<q.maximized(p)<<endl;
10     cout<<p<<endl<<q<<endl;

result:

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

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

点乘叉乘(内积外积)

test:

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

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不能打公式么???)

时间: 2024-08-24 10:31:28

OpenMesh 之向量操作的相关文章

向量操作的思想

最近在刷Coursera上NG的<<机器学习>>课程,使用octave来做作业,发现编程的时候,需要使用很多向量化的操作. 结合前段时间使用R语言的经验,发现自己应该有意思培养向量化操作的思想. 向量化操作,不同于一般计算的只针对当个值或者当个变量,而是同时对一批值或者一批变量做相同的计算操作,或者对这批值或者变量求和或求积,这种操作方便快速简洁. 但是,感觉自己笨笨的,在脑袋里很难模拟整个计算过程,以致于对一些数学公示看得不是很懂,要注意好好加强向量计算的思想.

R语言多元素向量

使用冒号运算带有数值数据(数值的增加为1) # Creating a sequence from 5 to 13. v <- 5:13 print(v) # Creating a sequence from 6.6 to 12.6. v <- 6.6:12.6 print(v) # If the final element specified does not belong to the sequence then it is discarded. v <- 3.8:11.4 print

计算机系统结构 流水线技术-向量

一.向量处理方式 1)横向处理方式 2)纵向处理方式 3)纵横处理方式 下面以计算表达式 D = A * ( B + C ) (1)横向处理方式 逐个求出结果向量的各个元素 d1=a1×(b1+c1) d2=a2×(b2+c2) - dN=aN×(bN+cN) 逐个求D中的N个分量,先进行相加k←b1+c1,其中k为暂存单元,然后相乘d1←k×a1 . 在每个向量元素的加乘运算中,都会发生数据相关的情况,而且当采用静态流水线时,还要进行2次 乘和加功能的转换.这样共会出现N次相关和2N次功能转换

【足迹C++primer】32、定制操作_2

定制操作_2 完整的biggies 好吧上一章是有点2B了,我的,昨天可能是刚考完心情有点小激动就不想学习了,我错了!! /** * 功能:定制操作 * 时间:2014年6月19日07:32:03 * 作者:cutter_point */ #include<iostream> #include<vector> #include<string> #include<numeric> #include<algorithm> using namespac

C++ STL中vector(向量容器)使用简单介绍

原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组,或者作为动态内存. 在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即cap

GPU渲染管线与可编程着色器

本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/71978861 这篇文章是解析计算机图形学界"九阴真经总纲"一般存在的<Real-Time Rendering 3rd>系列文章的第三篇.将带来RTR3第三章内容"Chapter 3 The Graphics Processing Unit 图形处理器"的总结.概括与提炼. 这章的主要内容是介绍G

C/C++框架和库 (真的很强大) 转

http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali

值得推荐的C/C++框架和库(深度好文)

[本文系外部转贴,原文地址:http://www.cppblog.com/merlinfang/archive/2014/12/26/209311.html http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 公交车上看到的好文,忍不住转发!下次造轮子前先看看现有的轮子吧-- 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客

C++开源库大全(转)

程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committee :C++标准委员会 框架 C++通用框架和库