[8298] | 1 | function normal_node=expcontract(newfile,oldfile,distance)
|
---|
[2317] | 2 | %EXPCONTRACT - contract or expand a profile, according to the normal.
|
---|
| 3 | %
|
---|
| 4 | % Usage:
|
---|
| 5 | % expcontract(newfile,oldfile,distance)
|
---|
| 6 | %
|
---|
| 7 | % See also EXPMASTER, EXPDOC
|
---|
| 8 |
|
---|
[12691] | 9 | contour=expread(oldfile);
|
---|
[2317] | 10 | num=numel(contour.x);
|
---|
| 11 |
|
---|
| 12 | normal=zeros(num-1,2);
|
---|
[8298] | 13 | normal_node=zeros(num-1,2);
|
---|
[2317] | 14 |
|
---|
| 15 | for i=1:num-1,
|
---|
| 16 | normal(i,:)=[ contour.y(i)-contour.y(i+1) contour.x(i+1)-contour.x(i)];
|
---|
| 17 | normal(i,:)=normal(i,:)/sqrt(normal(i,1)^2+normal(i,2)^2);
|
---|
| 18 | end
|
---|
| 19 |
|
---|
[8298] | 20 | normal_node(2:end,:)=[normal(1:end-1,:)+normal(2:end,:)];
|
---|
| 21 | normal_node(1,:)=normal(1,:)+normal(end,:);
|
---|
[2317] | 22 |
|
---|
[8298] | 23 | normal_node_norm=sqrt(normal_node(:,1).^2+normal_node(:,2).^2);
|
---|
| 24 | normal_node(:,1)=normal_node(:,1)./normal_node_norm;
|
---|
| 25 | normal_node(:,2)=normal_node(:,2)./normal_node_norm;
|
---|
[2317] | 26 |
|
---|
[8298] | 27 | contour.x(1:end-1)=contour.x(1:end-1)+distance*normal_node(:,1);
|
---|
| 28 | contour.y(1:end-1)=contour.y(1:end-1)+distance*normal_node(:,2);
|
---|
[2317] | 29 |
|
---|
| 30 | contour.x(end)=contour.x(1);
|
---|
| 31 | contour.y(end)=contour.y(1);
|
---|
| 32 |
|
---|
| 33 | expwrite(contour,newfile);
|
---|