~ubuntu-branches/ubuntu/karmic/scilab/karmic

« back to all changes in this revision

Viewing changes to macros/xdess/secto3d.sci

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2002-03-21 16:57:43 UTC
  • Revision ID: james.westby@ubuntu.com-20020321165743-e9mv12c1tb1plztg
Tags: upstream-2.6
ImportĀ upstreamĀ versionĀ 2.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
function [m,x]=secto3d(seclist,npas)
 
2
//Etant donnee une surface 3D decrite par une liste (seclist) de sections
 
3
// dans le plan  (x,z),  [m [,x]]=secto3d(seclist [,npas]) retourne une
 
4
// matrice m  contenant une discretisation reguliere de la surface:
 
5
//   la i-ieme ligne de la matrice m correspond a la i-ieme section,
 
6
//   la j-ieme colonne de m  correspondant a l'abscisse x(j).
 
7
//Chaque section seclist(i) est decrite par une matrice a 2 lignes,
 
8
// correspondants respectivement aux coordonnees selon l'axe des x et des z.
 
9
//%methode
 
10
// Il est tout d'abord calcule les bornes extremales xmin,xmax sur
 
11
// l'axe des x pour l'ensemble des sections, l'intervalle [xmin,xmax]
 
12
// est ensuite decoupe en npas egaux, chaque section est ensuite interpolee
 
13
// lineairement en chaque point de cette discretisation.
 
14
//
 
15
// si npas est omis il est par defaut pris egal au nombre de sections.
 
16
//%autre syntaxe
 
17
// [m]=secto3d(seclist ,x) dans ce cas le vecteur x sera pris comme decoupage
 
18
// de l'axe des x pour l'ensemble des sections
 
19
//%voir aussi
 
20
// la macro plot3d
 
21
//!
 
22
//origine S Steer INRIA 1991
 
23
// Copyright INRIA
 
24
 
 
25
[lhs,rhs]=argn(0)
 
26
n=size(seclist)
 
27
//
 
28
if rhs<2 then npas=n,end
 
29
if prod(size(npas))==1 then
 
30
  sec=seclist(1);sec=sec(1,:)
 
31
  xmax=maxi(sec);xmin=mini(sec)
 
32
  for k=2:n
 
33
    sec=seclist(k);sec=sec(1,:)
 
34
    xmax=maxi(xmax,maxi(sec))
 
35
    xmin=mini(xmin,mini(sec))
 
36
  end
 
37
  pas=(xmax-xmin)/npas
 
38
  x=[xmin-pas xmin:pas:xmax xmax+pas]
 
39
else
 
40
  x=npas
 
41
end
 
42
nx=prod(size(x))
 
43
m(n,nx)=0;
 
44
for k=1:n
 
45
  sec=seclist(k)
 
46
  [ms,ns]=size(sec)
 
47
  sec=[[x(1);sec(2,1)],sec,[x(nx);sec(2,ns)]]
 
48
  m(k,:)=interpln(sec,x);
 
49
end
 
50
 
 
51