File: locate.sci

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (47 lines) | stat: -rw-r--r-- 1,441 bytes parent folder | download
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
function [x]=locate(n,flag)
//[x]=locate(n,flag)
//fonction permettant d'obtenir les coordonnees  d'un ou plusieurs
//points designes a l'aide de la souris sur un trace.
//Les resultats ne sont significatifs que sur les axes lineaires.
//x=locate(n) . Si n>0 retourne dans x(2,n) les coordonnees des  n
//             points designes.
//           . Si n<=0 retourne dans x les coordonnees des points
//             designes jusqu'a l'indication de fin de saisie, ce
//             dernier point n'etant pas retenu.
//x=locate()  . equivault au cas n <= 0
//si flag=1, on trace une croix sur chaque point saisi
//
//Sur les systemes ayant une souris a boutons, on designe un point
//en cliquant sur un des boutons, la fin de saisie pour  n<=0  est
//indiquee en cliquant sur le bouton de gauche.
//!
// Copyright INRIA
[lhs,rhs]=argn(0)
xselect();
if rhs<=1,flag=0;end
if rhs==0;n=-1;end

deff('[]=clearmode(flag)',['modek=xget(''alufunction'')';
    'xset(''alufunction'',6)';
    'if flag==1,xpoly(x(1,:),x(2,:),''marks'',0);end';
    'xset(''alufunction'',modek);';
    'xset(''mark'',xxx(1),xxx(2))']);

x=[];
xxx=xget('mark');
xset('mark',2,xxx(2));
if n >= 0 then 
  for i=1:n,[i,x1,y1]=xclick();
    if flag==1,xpoly(x1,y1,'marks',0);end
    x=[x,[x1;y1]];end
  else while %t, [i,x1,y1]=xclick(), 
    if i==0 ,clearmode(flag),return
    else if flag==1,xpoly(x1,y1,'marks',0);end
    x=[x,[x1;y1]];
  end
end
end
clearmode(flag);