PCL入門《三》平面的法線

2021-08-09 09:33:17 字數 824 閱讀 1913

通常我們需要估計平面的方向,這就需要用到法線了,法線就是指垂直平面的線。

pcl中有自動求出法線的方法,我們來看一看,

首先假設我們有乙個平面的點雲cloud_xyz

要求出法線首先我們先定義乙個法線估計的物件ne

pcl::normalestimationne;

然後把要求的平面點雲傳給他

ne. setinputcloud (cloud_xyz);

這個方法求出cloud_xyz上每個點的法線方向,他是根據每個點附近的點雲組成的平面求出的,所以我們需要設定乙個半徑,用來估計附近多大的範圍取點來算平面,

ne. setradiussearch (

0.05);

最後定義乙個normal的物件來接受計算出來的法線

pcl::pointcloud::

ptrcloud_normals (

new pcl::pointcloud);

計算並把結果儲存在cloud_normals裡

ne. compute (*cloud_normals);

這時算出來的法線就在這個物件裡了,他裡面的元素是和點雲一一對應的,我們要訪問每個點的法線方向,可以這樣

for(

int ix=

0;ixpoints.

size();ix++)

} 這裡的isnan是判斷法線是否為nan,因為如果乙個點周圍找不到足夠的點計算平面,則法線中會賦值為nan,如果需要直接當作數字來用的同學們一定要注意這一點,使用我這種方法來判斷。normal_x就是法線的x方向了,y z同理。然後pcl算出的法線是不知道正方向的,所以這點需要人為去判斷正負。

三角形 平面法線 頂點法線

在direct3d中,三角形是構成實體的基本單位,因為乙個三角形正好是乙個平面,以三角形面為單位進行渲染效率最高。乙個三角形由三個點構成,習慣上把這些點稱為頂點 vertex 三角形平面有正反面之分,由頂點的排序決定 頂點按順時針排列的表面是正面,如圖。其中與三角形平面垂直 且指向正面的向量稱為該平...

三角形 平面法線 頂點法線

在direct3d中,三角形是構成實體的基本單位,因為乙個三角形正好是乙個平面,以三角形面為單位進行渲染效率最高。乙個三角形由三個點構成,習慣上把這些點稱為頂點 vertex 三角形平面有正反面之分,由頂點的排序決定 頂點按順時針排列的表面是正面,如圖。其中與三角形平面垂直 且指向正面的向量稱為該平...

已知三點求平面方程 平面法向量和點到平面的距離

已知三點p1 x1,y1,z1 p2 x2,y2,z2 p3 x3,y3,z3 要求確定的平面方程 關鍵在於求出平面的乙個法向量,為此做向量p1p2 x2 x1,y2 y1,z2 z1 p1p3 x3 x1,y3 y1,z3 z1 平面法線和這兩個向量垂直,因此法向量n 平面方程 a x x1 b ...