-
Notifications
You must be signed in to change notification settings - Fork 2
/
nrb4surf.m
54 lines (50 loc) · 1.27 KB
/
nrb4surf.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function srf = nrb4surf(p11,p12,p21,p22)
%
% Function Name:
%
% nrb4surf - Constructs a NURBS bilinear surface.
%
% Calling Sequence:
%
% srf = nrb4surf(p11,p12,p21,p22)
%
% Parameters:
%
% p11 : Cartesian coordinate of the lhs bottom corner point.
%
% p12 : Cartesian coordinate of the rhs bottom corner point.
%
% p21 : Cartesian coordinate of the lhs top corner point.
%
% p22 : Cartesian coordinate of the rhs top corner point.
%
% srf : NURBS bilinear surface, see nrbmak.
%
% Description:
%
% Constructs a bilinear surface defined by four coordinates.
%
% The position of the corner points
%
% ^ V direction
% |
% ----------------
% |p21 p22|
% | |
% | SRF |
% | |
% |p11 p12|
% -------------------> U direction
%
% D.M. Spink
% Copyright (c) 2000.
if nargin < 4
error('Four corner points must be defined');
end
coefs = [zeros(3,2,2); ones(1,2,2)];
coefs(1:length(p11),1,1) = p11(:);
coefs(1:length(p12),1,2) = p12(:);
coefs(1:length(p21),2,1) = p21(:);
coefs(1:length(p22),2,2) = p22(:);
knots = {[0 0 1 1] [0 0 1 1]};
srf = nrbmak(coefs, knots);