]> Creatis software - CreaPhase.git/blobdiff - octave_packages/nurbs-1.3.6/nrbline.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / nurbs-1.3.6 / nrbline.m
diff --git a/octave_packages/nurbs-1.3.6/nrbline.m b/octave_packages/nurbs-1.3.6/nrbline.m
new file mode 100644 (file)
index 0000000..53cf218
--- /dev/null
@@ -0,0 +1,59 @@
+function curve = nrbline(p1,p2)
+% 
+% NRBLINE: Construct a straight line.
+% 
+% Calling Sequence:
+% 
+%   crv = nrbline()
+%   crv = nrbline(p1,p2)
+% 
+% INPUT:
+% 
+% p1           : 2D or 3D cartesian coordinate of the start point.
+% 
+% p2            : 2D or 3D cartesian coordinate of the end point.
+%
+% OUTPUT:
+% 
+% crv          : NURBS curve for a straight line.
+% 
+% Description:
+% 
+%   Constructs NURBS data structure for a straight line. If no rhs 
+%   coordinates are included the function returns a unit straight
+%   line along the x-axis.
+%
+%    Copyright (C) 2000 Mark Spink
+%
+%    This program is free software: you can redistribute it and/or modify
+%    it under the terms of the GNU General Public License as published by
+%    the Free Software Foundation, either version 2 of the License, or
+%    (at your option) any later version.
+
+%    This program is distributed in the hope that it will be useful,
+%    but WITHOUT ANY WARRANTY; without even the implied warranty of
+%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+%    GNU General Public License for more details.
+%
+%    You should have received a copy of the GNU General Public License
+%    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+coefs = [zeros(3,2); ones(1,2)];
+
+if nargin < 2
+  coefs(1,2) = 1.0;  
+else
+  coefs(1:length(p1),1) = p1(:);    
+  coefs(1:length(p2),2) = p2(:);
+end
+
+curve = nrbmak(coefs, [0 0 1 1]);
+
+end
+
+%!demo
+%! crv = nrbline([0.0 0.0 0.0]',[5.0 4.0 2.0]');
+%! nrbplot(crv,1);
+%! grid on;
+%! title('3D straight line.');
+%! hold off