【3D实践】3D曲率原理及计算(3D-Mesh)

更新时间:2023-07-28 10:26:31 阅读: 评论:0

【3D实践】3D曲率原理及计算(3D-Mesh)
[7]章毓晋.图像处理.北京:清华⼤学出版社,2018
1 曲率原理
什么是曲率?
曲率是描述⼏何体弯曲程度的量,例如三维曲⾯偏离平⾯的程度,或者⼆维曲线偏离直线的程度,也可确定曲⾯类型。常应⽤于⼏何分析,地理测绘等领域。
例如在材料学中,材料的催化活性主要与表⾯活性位点有关,⽽曲率影响活性位点的数量。
曲线P点切线:
曲线任意⼀点Q,PQ两点⽆限接近,所连直线为切线。闺蜜网名两人
曲线P点曲率:曲线任意⼀点?_1, ?_2 ,三点确定⼀圆, ?_1, ?_2 ⽆限接近P点,密切圆半径r的倒数为曲率。
木薯糖水的做法
平⾯结论:圆上弯曲程度相同,任意⼀点曲率相等,越弯曲曲率越⼤,直线曲率为0。
曲⾯曲率:
在曲⾯上取⼀点P,曲⾯在P点的法线为n,过n可以有⽆限多个剖切平⾯,每个剖切平⾯与曲⾯相交,交线为⼀条平⾯曲线。
不同的剖切平⾯上的平⾯曲线在P点的曲率半径⼀般是不相等的。
三维空间中的曲率:
主曲率:曲⾯上有⽆数个不同⽅向的曲线,曲⾯上的点不同⽅向具有不同曲率,其中最⼤值和最⼩值为称为主曲率 k1 和k2,极值⽅向称为主⽅向。数学上可证名k1和k2互相垂直。
⾼斯曲率:两主曲率乘积,反映曲⾯在不同⽅向弯曲程度是否相同。⾼斯曲率为正,为球⾯。⾼斯曲率为负双曲⾯。
平均曲率:两主曲率算数平均数(k1+k2)/2,反映曲⾯凹凸程度。平均曲率为正,局部凹。平均曲率为负,局部凸。
第⼀个图形的⾼斯曲率为负值,第⼆个为0,第三个为正数。
2 ⾼斯曲率(G)和均值曲率(H)所确定表⾯类型:
通过⾼斯曲率和均值曲率的正负判断曲⾯类型。
H<0H=0H>0
G<0鞍脊最⼩/迷向
G=0⼭脊平⾯
G>0⼭峰
3 曲率的计算
通过⼀段时间的调研,我发现使⽤此两种⽅式计算曲率⽐较多。具体链接就不给出了,google⼀下就可以看到教程了案例了。(1)C++图形学⼏何处理库libigl
(2)三维⼏何处理系统MeshLab
4 本⼈使⽤的⽅式
我采⽤的第⼆种⽅式,使⽤MeshLab进⾏处理,得到曲率数据,保存到.ply⽂件中,在从.ply⽂件中提取曲率的值即可。这⾥我使⽤了Rply 的框架进⾏ply的⽂件读取。
这⾥给出main.cpp的代码
#include <stdio.h>
#include "rply.h"
#include <fstream>
#include <iostream>
using namespace std;
ofstream outfile;
红尘歌词static int vertex_cb(p_ply_argument argument) {
long eol;
ply_get_argument_ur_data(argument, NULL, &eol);
float temp = ply_get_argument_value(argument);
淮北小吃
outfile << temp  << endl;
printf("%g", ply_get_argument_value(argument));
if (eol) printf("\n");
el printf(" ");
return 1;
}
ubfstatic int face_cb(p_ply_argument argument) {
高压走廊
long length, value_index;
ply_get_argument_property(argument, NULL, &length, &value_index); switch (value_index) {
ca 0:
ca 1:
printf("%g ", ply_get_argument_value(argument));
break;
ca 2:
printf("%g\n", ply_get_argument_value(argument));
break;
工薪族default:
break;
}
return 1;
}
int main(void) {
outfile.open("mean_");
long nvertices;
p_ply ply = ply_open("Mean_01.ply", NULL);
if (!ply) return 1;
if (!ply_read_header(ply)) return 1; //运⾏检查
nvertices = ply_t_read_cb(ply, "vertex", "x", vertex_cb, NULL, 0);
ply_t_read_cb(ply, "vertex", "y", vertex_cb, NULL, 0);
ply_t_read_cb(ply, "vertex", "z", vertex_cb, NULL, 0);
ply_t_read_cb(ply, "vertex", "quality", vertex_cb, NULL, 1);
/
/printf("%ld\n", nvertices);
if (!ply_read(ply)) return 1;
ply_clo(ply);
outfile.clo();//关闭⽂件流
getchar();
return 0;
}

本文发布于:2023-07-28 10:26:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1121607.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:曲率   程度   弯曲   曲线   直线   处理   位点
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图