File: path.sql

package info (click to toggle)
pgsphere 1.1.1%2B2020-10-20-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,700 kB
  • sloc: ansic: 12,032; sql: 6,091; cpp: 853; makefile: 216; perl: 168; yacc: 145; xml: 66; lex: 55; sh: 1
file content (106 lines) | stat: -rw-r--r-- 5,484 bytes parent folder | download | duplicates (3)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
\set ECHO none
SELECT set_sphere_output_precision(8);
\set ECHO all

--
-- ellipse and path
--
  
-- negators , commutator @,&&

SELECT spath '{(280d, -9d),(280d, -8d)}'   @  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -9d),(280d,-12d)}'   @  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d,-11d),(280d,-12d)}'   @  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -9d),(280d, -8d)}'  &&  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -9d),(280d,-12d)}'  &&  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d,-11d),(280d,-12d)}'  &&  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -9d),(280d, -8d)}'  !@  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -9d),(280d,-12d)}'  !@  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d,-11d),(280d,-12d)}'  !@  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -9d),(280d, -8d)}' !&&  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -9d),(280d,-12d)}' !&&  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d,-11d),(280d,-12d)}' !&&  sellipse '<{10d,5d},(280d,-20d),90d>'; 
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   ~  spath '{(280d, -9d),(280d, -8d)}'; 
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   ~  spath '{(280d, -9d),(280d,-12d)}'; 
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   ~  spath '{(280d,-11d),(280d,-12d)}'; 
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   &&  spath '{(280d, -9d),(280d, -8d)}';
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   &&  spath '{(280d, -9d),(280d,-12d)}';
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   &&  spath '{(280d,-11d),(280d,-12d)}';
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !~  spath '{(280d, -9d),(280d, -8d)}'; 
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !~  spath '{(280d, -9d),(280d,-12d)}'; 
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !~  spath '{(280d,-11d),(280d,-12d)}'; 
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !&&  spath '{(280d, -9d),(280d, -8d)}';
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !&&  spath '{(280d, -9d),(280d,-12d)}';
SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !&&  spath '{(280d,-11d),(280d,-12d)}';

-- path is a line , ellipse is point
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{0d,0d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{0d,0d},(280d, -8d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{0d,0d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{0d,0d},(280d, -8d),90d>';
-- path is a line , ellipse is circle
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{5d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{5d,5d},(280d, -8d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{5d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{5d,5d},(280d, -8d),90d>';
-- path is a line , ellipse is path
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{5d,0d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{5d,0d},(280d, -8d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{5d,0d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{5d,0d},(280d, -8d),90d>';
-- path is a line , ellipse is a real ellipse
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'   @  sellipse '<{10d,5d},(280d, -8d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{10d,5d},(280d,-20d),90d>';
SELECT spath '{(280d, -8d),(280d, -9d)}'  &&  sellipse '<{10d,5d},(280d, -8d),90d>';
-- create path as aggregate
SELECT spath(data.p) FROM ( SELECT spoint '(0,1)' as p UNION ALL SELECT spoint '(1,1)' UNION ALL SELECT '(1,0)' ) AS data ;

--
-- checking path other operators
--
  
\set poly  'spoly \'{(0.1,0),(0.2,0),(0.2,0.1),(0.3,0.1),(0.3,-0.1),(0.4,-0.1),(0.5,0.1),(0.4,0.2),(0.1,0.2)}\''
\set path1 'spath \'{(0.1,0),(0.2,0),(0.2,0.1),(0.3,0.1),(0.3,-0.1),(0.4,-0.1),(0.5,0.1),(0.4,0.2),(0.1,0.2)}\''
\set path2 'spath \'{(0,0),(1,0),(2,0),(3,0)}\''
\set path3 'spath \'{(0,0),(0,1),(0,1.5)}\''

SELECT @-@ spath '{(0,0),(1,0),(2,0),(3,0)}';
SELECT :path1 =  :path2;
SELECT :path1 =  :path1;
SELECT :path1 <> :path2;
SELECT :path1 <> :path1;
SELECT :poly  && :path1;
SELECT :path1 && :poly ;
SELECT :path1 @  :poly ;
SELECT :path2 @  :poly ;
SELECT :path1 && :path1;
SELECT :path1 && :path1;
SELECT :poly  && :path2;
SELECT :path2 && :poly ;
SELECT :path2 && :path1;
SELECT :poly  && :path3;
SELECT :path3 && :poly ;
SELECT :path3 && :path1;
SELECT :path3 && :path2;
SELECT :path1 @  scircle '<(0,1),1>';
SELECT :path3 @  scircle '<(0,1),1>';
SELECT :path3 @  scircle '<(0,1),0.7>';
SELECT :path1 && scircle '<(0,1),1>';  
SELECT :path3 && scircle '<(0,1),1>';  
SELECT :path3 && scircle '<(0,1),0.7>';
SELECT :path3 && scircle '<(0,-1),0.7>';
SELECT :path3 @  scircle '<(0,-1),0.7>';
SELECT :path3 && sline ( spoint '(0,-1)', spoint '(0,1)' );
SELECT :path3 && sline ( spoint '(-1,0)', spoint '(1,0)' );
SELECT :path3 && sline ( spoint '(-1,0)', spoint '(-0.3,0)' );
SELECT spath '{(0.11,0.15),(0.12,0.15),(0.13,0.15)}' @ :poly; 

-- create path
SELECT spath(data.p) FROM ( SELECT spoint '(0,1)' as p UNION ALL SELECT spoint '(1,1)' UNION ALL SELECT '(1,0)' ) AS data ;

SELECT set_sphere_output( 'DEG' );

-- test stored data
SELECT spoint(p,2) FROM spheretmp6 WHERE id=2;