資源簡介
選擇三維點云的點,返回坐標:
H = CLICKA3DPOINT(POINTCLOUD) shows a 3D point cloud and lets the user
% select points by clicking on them. The selected point is highlighted
% and its index in the point cloud will is printed on the screen.
% POINTCLOUD should be a 3*N matrix, represending N 3D points.
% Handle to the figure is returned.
%
% other functions required:
% CALLBACKCLICK3DPOINT mouse click callback function
% ROWNORM returns norms of each row of a matrix
%
% To test this function ...
% pointCloud = rand(3,100)*100;
% h = clickA3DPoint(pointCloud);
%
% now rotate or move the point cloud and try it again.
% (on the figure View menu, turn the Camera Toolbar on, ...)
%
% To turn off the callback ...
% set(h, 'WindowButtonDownFcn','');

代碼片段和文件信息
function?callbackClickA3DPoint(src?eventData?pointCloud)
%?CALLBACKCLICK3DPOINT?mouse?click?callback?function?for?CLICKA3DPOINT
%
%???The?transformation?between?the?viewing?frame?and?the?point?cloud?frame
%???is?calculated?using?the?camera?viewing?direction?and?the?‘up‘?vector.
%???Then?the?point?cloud?is?transformed?into?the?viewing?frame.?Finally
%???the?z?coordinate?in?this?frame?is?ignored?and?the?x?and?y?coordinates
%???of?all?the?points?are?compared?with?the?mouse?click?location?and?the?
%???closest?point?is?selected.
%
%???Babak?Taati?-?May?4?2005
%???revised?Oct?31?2007
%???revised?Jun?3?2008
%???revised?May?19?2009
point?=?get(gca?‘CurrentPoint‘);?%?mouse?click?position
camPos?=?get(gca?‘CameraPosition‘);?%?camera?position
camTgt?=?get(gca?‘CameraTarget‘);?%?where?the?camera?is?pointing?to
camDir?=?camPos?-?camTgt;?%?camera?direction
camUpVect?=?get(gca?‘CameraUpVector‘);?%?camera?‘up‘?vector
%?build?an?orthonormal?frame?based?on?the?viewing?direction?and?the?
%?up?vector?(the?“view?frame“)
zAxis?=?camDir/norm(camDir);????
upAxis?=?camUpVect/norm(camUpVect);?
xAxis?=?cross(upAxis?zAxis);
yAxis?=?cross(zAxis?xAxis);
rot?=?[xAxis;?yAxis;?zAxis];?%?view?rotation?
%?the?point?cloud?represented?in?the?view?frame
rotatedPointCloud?=?rot?*?pointCloud;?
%?the?clicked?point?represented?in?the?view?frame
rotatedPointFront?=?rot?*?point‘?;
%?find?the?nearest?neighbour?to?the?clicked?point?
pointCloudIndex?=?dsearchn(rotatedPointCloud(1:2:)‘?...?
????rotatedPointFront(1:2));
h?=?findobj(gca‘Tag‘‘pt‘);?%?try?to?find?the?old?point
selectedPoint?=?pointCloud(:?pointCloudIndex);?
if?isempty(h)?%?if?it‘s?the?first?click?(i.e.?no?previous?point?to?delete)
????
????%?highlight?the?selected?point
????h?=?plot3(selectedPoint(1:)?selectedPoint(2:)?...
????????selectedPoint(3:)?‘r.‘?‘MarkerSize‘?20);?
????set(h‘Tag‘‘pt‘);?%?set?its?Tag?property?for?later?use???
else?%?if?it?is?not?the?first?click
????delete(h);?%?delete?the?previously?selected?point
????
????%?highlight?the?newly?selected?point
????h?=?plot3(selectedPoint(1:)?selectedPoint(2:)?...
????????selectedPoint(3:)?‘r.‘?‘MarkerSize‘?20);??
????set(h‘Tag‘‘pt‘);??%?set?its?Tag?property?for?later?use
end
fprintf(‘you?clicked?on?point?number?%d\n‘?pointCloudIndex);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2361??2009-11-10?14:54??callbackClickA3DPoint.m
?????文件????????1600??2009-11-10?14:52??clickA3DPoint.m
?????文件????????1332??2009-11-10?15:00??license.txt
?????文件?????????338??2009-11-10?14:51??rowNorm.m
- 上一篇:MVDR算法進行譜估計
- 下一篇:WCDMA matlab仿真實現
評論
共有 條評論