| 
									
										
										
										
											2012-07-24 21:35:04 +08:00
										 |  |  | function plot3DPoints(values, linespec, marginals)
 | 
					
						
							|  |  |  | %PLOT3DPOINTS Plots the Point3's in a values, with optional covariances | 
					
						
							|  |  |  | %   Finds all the Point3 objects in the given Values object and plots them. | 
					
						
							|  |  |  | % If a Marginals object is given, this function will also plot marginal | 
					
						
							|  |  |  | % covariance ellipses for each point. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import gtsam.* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ~exist('linespec', 'var') || isempty(linespec) | 
					
						
							| 
									
										
										
										
											2015-01-22 09:10:17 +08:00
										 |  |  |     linespec = 'g*'; | 
					
						
							| 
									
										
										
										
											2012-07-24 21:35:04 +08:00
										 |  |  | end | 
					
						
							|  |  |  | haveMarginals = exist('marginals', 'var'); | 
					
						
							|  |  |  | keys = KeyVector(values.keys); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | holdstate = ishold; | 
					
						
							|  |  |  | hold on | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-22 09:10:17 +08:00
										 |  |  | if haveMarginals | 
					
						
							|  |  |  |     % Plot points and covariance matrices (slow) | 
					
						
							|  |  |  |     for i = 0:keys.size-1 | 
					
						
							|  |  |  |         key = keys.at(i); | 
					
						
							|  |  |  |         try | 
					
						
							|  |  |  |             p = values.atPoint3(key) | 
					
						
							| 
									
										
										
										
											2012-07-24 21:35:04 +08:00
										 |  |  |             P = marginals.marginalCovariance(key); | 
					
						
							| 
									
										
										
										
											2012-08-04 05:02:45 +08:00
										 |  |  |             gtsam.plotPoint3(p, linespec, P); | 
					
						
							| 
									
										
										
										
											2015-01-22 09:10:17 +08:00
										 |  |  |         catch | 
					
						
							|  |  |  |             % I guess it's not a Point3 | 
					
						
							| 
									
										
										
										
											2012-07-24 21:35:04 +08:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2015-01-22 09:10:17 +08:00
										 |  |  |     end | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |     % Extract all in C++ and plot all at once (fast) | 
					
						
							|  |  |  |     P = utilities.extractPoint3(values); | 
					
						
							|  |  |  |     if size(linespec,2)==1 | 
					
						
							|  |  |  |         plot3(P(:,1),P(:,2),P(:,3),[linespec '*']); | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         plot3(P(:,1),P(:,2),P(:,3),linespec); | 
					
						
							| 
									
										
										
										
											2012-07-24 21:35:04 +08:00
										 |  |  |     end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ~holdstate | 
					
						
							|  |  |  |     hold off | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | end |