计算三角形的面积

计算三角形的面积

简介:今天比较郁闷,计算平均曲率流使图形光顺的时候,没有成功。(@.@)

向量求面积

百度百科链接中的9根据向量求面积

double vfarea(MyMesh& mesh, MyMesh::VertexHandle vh) {typedef typename MyMesh::Point p_t;typedef typename MyMesh::VertexHandle vh_t;typedef typename MyMesh::HalfedgeHandle hh_t;typename MyMesh::VertexFaceIter vf_it;//点邻接的面typename MyMesh::FaceVertexIter fv_it;//面上的点double area = 0.0;for (vf_it = mesh.vf_iter(vh); vf_it.is_valid(); ++vf_it) {//关于点邻接的面fv_it = mesh.fv_iter(*vf_it);//得到面上的点const p_t& P = mesh.point(*fv_it);  ++fv_it;const p_t& Q = mesh.point(*fv_it);  ++fv_it;const p_t& R = mesh.point(*fv_it);area += ((Q - P) % (R - P)).norm() * 0.5f;//两个向量的叉乘的向量值的一半就是三角形的面积}cout << "[Debug] area is " << area << std::endl;return fabs(area) > std::numeric_limits<double>::min() ? area : 1e-8;
}

其中有引出OpenMesh的叉乘和点乘

参考链接 博客园
其中得知:

Scalar length() const        //compute euclidean norm 
Scalar norm() const          //compute euclidean norm 

计算出来的长度就是 sqrt (a*a + b*b + c*c)的长度

点乘叉乘(内积外积)

MyMesh::Normal p(1,-3,2), q(0,2,4);
cout<<"dot product    : "<< (p | q) <<endl;
cout<<"cross product  : "<< (p % q) <<endl;
向量 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) 

得到
p | q 是点乘
p % q 是叉乘

另外提供一种 海伦公式计算三角形面积的方法

公式来源惨遭百度百科

double calcAreaOfThreePoints(const OpenMesh::Vec3f &a, const OpenMesh::Vec3f &b, const OpenMesh::Vec3f &c) {//应用海伦公式   S=1/4sqrt[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]double lenA = sqrt(pow(b[0] - c[0], 2) + pow(b[1] - c[1], 2) + pow(b[2] - c[2], 2));// b - c 两点的坐标double lenB = sqrt(pow(a[0] - c[0], 2) + pow(a[1] - c[1], 2) + pow(a[2] - c[2], 2));// a - c 两点的坐标double lenC = sqrt(pow(b[0] - a[0], 2) + pow(b[1] - a[1], 2) + pow(b[2] - a[2], 2));// a - b 两点的坐标double Area = 1.0 / 4.0 * sqrt((lenA + lenB + lenC) * (lenA + lenB - lenC) * (lenA + lenC - lenB) * (lenB + lenC - lenA));return Area;
}

转载于:https://www.cnblogs.com/eat-too-much/p/11265885.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux coreutils升级,Coreutils

Coreutils提供了配置工具&#xff0c;定义颜色代码更加方便&#xff1b;Coreutils包含的不仅仅是ls&#xff0c;同时作为Linux用户&#xff0c;我更习惯于使用GNU的各种shell工具。其实就是安装了Coreutils&#xff0c;就可以使用Linux下的程序&#xff0c;【ls/mkdir/mv】等等…

IDEA插件:search with bing、search with baidu

//转载请注明出处&#xff1a;https://www.cnblogs.com/nreg/p/11267169.html 当项目出现错误时&#xff0c;经常需要复制错误信息粘贴到浏览器查询&#xff0c;但是手动复制再粘贴太麻烦了&#xff0c; 因此IDEA官方给了右键菜单search with google, 感觉上方便了许多&#xf…

linux2.6 gcc 4.8.2,在Red Hat Enterprise linux 6.5上安装GCC 4.8.2

我是Red Hat Enterprise linux的新手.我在Red Hat Enterprise Linux 6.5上编译gcc 4.8.2时面临问题;我从GNU webite中获取源代码.我按照这个链接中的步骤http://gcc.gnu.org/wiki/InstallingGCC发出的命令是:tar xzf gcc-4.6.2.tar.gzcd gcc-4.6.2./contrib/download_prerequis…

oracle 游标(学校)

这段时间实在是很忙&#xff0c;结婚、赶项目进度、被迫出书、教学。每件事都是不能得罪的。。。。前几天帮教务处修正oracle数据库数据问题&#xff0c;把代码贴出来防止以后找不到了 declareCURSORcurTTT isselectXN,XM,XQ,KCMC,XF,BJMC fromCJB;XN1 VARCHAR2(10);XM1 VARCHA…

残差

残差 残差在数理统计中是指实际观察值与估计值&#xff08;拟合值&#xff09;之间的差。 参考链接 百度百科 转载于:https://www.cnblogs.com/eat-too-much/p/11267651.html

linux arm ffmpeg configure文件,ffmpeg库的交叉编译记录

系统信息&#xff1a;UbuntuRelease 10.04主机编译器版本&#xff1a;liweiliwei:~$gcc -vUsingbuilt-in specs.Target:i486-linux-gnu… … … …gccversion 4.4.3 (Ubuntu 4.4.3-4ubuntu5)交叉编译器版本&#xff1a;liweiliwei:~$arm-linux-gcc -vUsingbuilt-in specs.Targe…

[原创]公布读取瑞星注册码的小程序源代码

大概一年多了&#xff0c;瑞星一直都没更改其序列号保存方式。这还是偶在学校时无聊研究的。偶是菜鸟&#xff0c;就不多说了。 关键代码如下&#xff1a; 1stringrisingpath;2inti, j 0; longsnoffset, idoffset;34//以下读取5//HKEY_LOCAL_MACHINE\SOFTWARE\rising\Rav,并存在…

红帽linux5.5序列号,Redhat 5 安装序列号及版本说明

在不久前发布的开源虚拟化战略和路线图中,红帽宣称将在未来的3至18个月内,提供四种虚拟化技术和产品,包括:红帽企业Linux、红帽企业虚拟化 Hypervisor、红帽企业服务器虚拟化管理、红帽企业桌面虚拟化管理.今天,他们公布了最新版Red Hat Enterprise Linux, RHEL 5.4.它支持广泛…

Linux常用备份恢复工具

[url]http://os.51cto.com/art/200611/34464.htm[/url]转载于:https://blog.51cto.com/cicizz/9272

Selenium 2自动化测试实战4(引用模块)

一、模组1.模组也叫类库或模块&#xff0c;引用模块 在python中&#xff0c;通过import….或from….import….的方式引用模块&#xff0c;下面引用time模块 import time print (time.ctime())#输出结果为“Tue Jul 30 11:34:32 2019”在time模块下面有一个ctime()方法用于获得当…

linux每隔多久调度y,Linux 进程调度+Linux系统一般执行过程 笔记

进程的调度时机与进程的切换操作系统原理中介绍了大量进程调度算法&#xff0c;这些算法从实现的角度看仅仅是从运行队列中选择一个新进程&#xff0c;选择的过程中运用了不同的策略而已。对于理解操作系统的工作机制&#xff0c;反而是进程的调度时机与进程的切换机制更为关键…

知识关联的价值还无法与人的关联的价值相比

在google的可怕之处一文中得到weidagang2046的指点&#xff0c;顿时惊出一身冷汗。 只研究计算机如何理解人是不够的&#xff0c;实际上&#xff0c;在人和计算机共存的系统中&#xff0c;有四方面的关系要研究&#xff1a; 人&#xff0d;>机&#xff0c;机&#xff0d;>…

稍微写一个ajax json解析的东西。如果前后端分离。

要形成前后端彻底分离&#xff0c;还是需要ajax 相互传递json&#xff0c;来保持数据的交互。所以写一个ajax 解析来来做记录。 <script>     //只要刷新页面就会直接获取到需要的json$(document).ready(function() {$.ajax({url:"/helloBody",type:"…

appsan可以扫描linux吗,[经验]使用appscan实现多站扫描简单自动化

随着年龄增长&#xff0c;身上负担的压力也越来越大。在工作中很多时候都会需要短时间内扫描多个网站&#xff0c;可能是平时时间不够&#xff0c;或者是客户特别要求&#xff0c;很多时候工作中的扫描工作要放在晚上睡觉时间来做。但是白天忙了一天&#xff0c;晚上不可能一直…

转发程序无法决定链接类型

最近&#xff0c;在客户电脑上看到很多的错误提示&#xff0c;上面写着“转发程序无法决定链接类型”的错误提示。经过查阅资料或可知&#xff0c;这很可能是因为本机有网络驱动器的原因(正好我给他们都安装了网络驱动器&#xff09;。微软网站说是因为当 TCP/IP 上的 NetBIOS …

运用PreviousPage简化提交流程

运用PreviousPage简化提交流程 若是一个page1.aspx向page2.aspx提交的流程&#xff0c;则在page2.aspx的顶部添加如下声明&#xff1a;<% PreviousPageType VirtualPath"~/page1.aspx" %>设置page1.aspx的PostbackUrl属性为~/page2.aspx。假设page1.aspx的code…

weblogic在处理jsp tag的scope属性时的BUG???

本人在项目中使用taglib&#xff0c;本来在tomcat下&#xff0c;很正常&#xff0c;迁移到weblogic时&#xff0c;大部分也正常&#xff0c;但有一个结构出现问题&#xff0c;即在TAG嵌套时&#xff0c;无法正常读取范围内的变量&#xff0c;请看以下结构体&#xff1a; <te…

c语言迷宫问题输出坐标,C语言数据结构之迷宫求解问题

现在网上各种对于迷宫的求解&#xff0c;版本多的数不胜数。本人小白一枚&#xff0c;贴上自己对迷宫的求解这个小项目&#xff0c;自己写的。望能帮助一些同样有困难的人&#xff0c;毕竟我当时费解了好一会儿时间呢。首先&#xff0c;先标明对于迷宫求解这个项目&#xff0c;…

Html5——File、FileReader、Blob、Fromdata对象

www.cnblogs.com/fps2tao/p/9… 转自上面 File File 接口提供有关文件的信息&#xff0c;并允许网页中的JavaScript访问其内容。 File对象可以用来获取某个文件的信息&#xff0c;还可以用来读取这个文件的内容。通常情况下&#xff0c;File对象是来自用户在一个 <input>…

中小企业信息化及市场

中小企业信息化及市场中小企业信息化是被各界高度关注的领域&#xff0c;近日在中国信息产业经济年会上听到了中小企业司刘怡的报告。中小企业信息化的现状是&#xff1a;61&#xff05;的中小企业已有专职的信息化建设与运行部门&#xff0c;但配置的IT专业技术人员少。可熟练…