· 6 years ago · Jan 21, 2020, 02:58 PM
1<?php
2//fire on random place
3$connect = mysql_connect("localhost","root","") or die ("Couldn't connect!");
4mysql_select_db("detection") or die ("Couldn't find db");
5$counter=0;
6$max=0;
7$xsum=0;
8$ysum=0;
9$xres=0;
10$yres=0;
11$angle1=0;
12
13//localize territory and shoot
14$query=mysql_query ("SELECT MAX(x) AS maxx,MAX(y) AS maxy FROM nodes");
15while ($row=mysql_fetch_assoc($query))
16 {
17 $maxx=$row['maxx'];
18 $maxy=$row['maxy'];
19 }
20
21$xrand=$maxx-rand(0,$maxx);
22$yrand=$maxy-rand(0,$maxy);
23echo "shot location: ";echo "<br>";
24echo "x: ".$xrand;
25echo "<br>";
26echo "y: ".$yrand;
27
28$shotpower=110+rand(-10,10);
29echo "<br>";
30echo "Shot power:".$shotpower;
31
32$timestamp = round(microtime(true) * 1000);
33echo "<br>"."actual timestamp(ms): ";
34echo $timestamp;
35$temperature=20+rand(-5,5);
36echo "<br>"."temperature(oC): ";
37echo $temperature;
38echo "<br>"."sound speed(m/s): ";
39$speed=331.5+0.6*$temperature;
40echo $speed;
41echo "<br>";
42echo "<br>";
43
44$query=mysql_query ("SELECT * FROM nodes ORDER BY RAND()");
45while ($row=mysql_fetch_assoc($query))
46 {
47 $nodid=$row['nodid'];
48 $xdb=$row['x'];
49 $ydb=$row['y'];
50
51 $x1 = $xrand;
52 $y1 = $yrand;
53
54 $x2 = $xdb;
55 $y2 = $ydb;
56
57 $x = ( pow($x2-$x1,2));
58 $y = ( pow($y2-$y1,2));
59
60 $distance = ( sqrt($x + $y));
61 $distance = round($distance,2);
62
63 $traveltime=($distance/$speed)*1000;
64 $volumedecrease=$shotpower-$distance;
65
66 //$angle = rad2deg(atan2($y1-$y2,$x1-$x2));
67 //$angle = atan2($y1-$y2,$x1-$x2);
68 $angle=($y1-$y2)/($x1-$x2);
69
70 //insert a little measure error
71 $angle = $angle+(rand(-1,1)/50);
72 $angle = round($angle,2);
73
74 echo "<br>";
75
76 if ($distance<$shotpower)
77 {
78 echo "<font color=red>";
79 echo "NodID:"."$nodid "."Nodx:$xdb "."Nody:$ydb "; //,";
80 echo "Distance: $distance";
81 echo " Volume decrease: ";
82 echo "$volumedecrease";
83 $newtimestamp=$timestamp+$traveltime;
84 echo " TimeStamp: "."$newtimestamp";
85 echo " Angle:";
86 echo "$angle";
87 echo "</font>";
88 $counter++;
89 //create list of nodes
90 $nodesneer[]=$nodid;
91
92 $name="ac".$nodid;
93
94 //create new table for each nod
95 $createtable = mysql_query ("
96 CREATE TABLE IF NOT EXISTS `".$name."` (
97 `aid` int(5) NOT NULL,
98 `x` double NOT NULL,
99 `y` double NOT NULL,
100 `volumedecrease` double NOT NULL,
101 `timestamp` double NOT NULL,
102 `angle` double NOT NULL,
103 PRIMARY KEY (`aid`)
104 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
105 ");
106
107 //put own data in table
108 $queryinsertrow = mysql_query ("
109 INSERT INTO $name VALUES ('$nodid','$xdb','$ydb','$volumedecrease','$newtimestamp','$angle')
110 ");
111
112 //retreive
113 //select neighbours
114 $query1=mysql_query ("SELECT * FROM station".$nodid." WHERE isnb=1 ORDER BY RAND()");
115 while ($row1=mysql_fetch_assoc($query1))
116 {
117 $nodid=$row1['nid'];
118 $x=$row1['x'];
119 $y=$row1['y'];
120 $namme="ac".$nodid;
121
122 if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$namme."'"))==1) //if table exists
123 {
124 $query2=mysql_query ("SELECT * FROM ac".$nodid." ORDER BY RAND() ");
125 while ($row2=mysql_fetch_assoc($query2))
126 {
127 $acaid=$row2['aid'];
128 $acx=$row2['x'];
129 $acy=$row2['y'];
130 $acvolumedecrease=$row2['volumedecrease'];
131 $actimestamp=$row2['timestamp'];
132 $acangle=$row2['angle'];
133 $targettable="ac".$nodid;
134
135 //put neighbours data in table
136 $queryinsertrow = mysql_query ("
137 INSERT INTO $name VALUES ('$acaid','$acx','$acy','$acvolumedecrease','$actimestamp','$acangle')
138 ");
139 }
140 }
141 }
142 }
143 else
144 {
145 echo "NodID:"."$nodid "."Nodx:$xdb "."Nody:$ydb "; //,";
146 echo "Distance: $distance";
147 }
148 }
149echo "<br>";echo "<br>";echo "<br>";
150foreach($nodesneer as $nodelist)
151 {
152 //echo "$nodelist: ";
153 //share number of rows - only with in a circle.
154 $query3=mysql_query ("SELECT COUNT(*) AS nu FROM ac".$nodelist." ");
155 while ($row3=mysql_fetch_assoc($query3))
156 {
157 $num=$row3['nu'];
158
159 if ($num>$max)
160 {
161 $max=$num;
162 $maxid=$nodelist;
163 }
164 }
165 }
166 echo "<br>";echo "<br>";
167 echo "Node with highest number of data (leader)";
168 echo "$maxid: $max";
169
170echo "<br>";
171echo "<br>";
172echo "Nodes in the ring of the shot: ".$counter ;
173echo " (";
174foreach($nodesneer as $nodelist)
175 {
176 echo $nodelist.",";
177 }
178echo ")";
179
180 echo "<br>";
181 echo "<br>";
182 echo "PreRESULTS:";
183
184$query4=mysql_query ("SELECT * FROM ac".$maxid." ");
185while ($row4=mysql_fetch_assoc($query4))
186 {
187 $aid=$row4['aid'];
188 $xres=$row4['x'];
189 $yres=$row4['y'];
190 $angleres=$row4['angle'];
191
192 $x2=$xres;
193 $y2=$yres;
194 $angle2=$angleres;
195 //if (isset ($xres, $yres) )
196
197 if ($xres>0 AND $yres>0)
198 {
199
200 //calculate intersection
201 $b1=$y1-$angle1*$x1;
202 $b2=$y2-$angle2*$x2;
203 //($angle1*$xmetsz+$b1)-($angle2*xmetsz+$b2)=0;
204 $xmetsz=($b2-$b1)/($angle1-$angle2);
205 $ymetsz=$angle1*$xmetsz+$b1;
206
207 $xmetszr=round($xmetsz,2);
208 $ymetszr=round($ymetsz,2);
209 echo "x: $xmetszr ";
210 echo "y: $ymetszr ";
211
212 $y1=$yres;
213 $x1=$xres;
214 $angle1=$angleres;
215 }
216
217 $xsum+=$xmetsz;
218 $ysum+=$ymetsz;
219 }
220 $numrows = mysql_num_rows($query4);
221 $xavg=$xsum/$numrows; $xavg=round($xavg,2);
222 $yavg=$ysum/$numrows; $yavg=round($yavg,2);
223 echo "<br>"; echo "<br>";echo "Calculated: ";echo "<br>";
224 echo "x: $xavg";echo "<br>";
225 echo "y: $yavg";echo "<br>";
226
227 //delete temporary files/tables from nodes
228 foreach($nodesneer as $nodelist)
229 {
230 //echo "$nodelist ";
231 $query5=mysql_query ("DROP TABLE ac".$nodelist." ");
232 }
233
234 $xerr=round($xavg-$xrand,2);
235 $yerr=round($yavg-$yrand,2);
236 echo "<br>";
237
238 echo "Error: x: $xerr, y: $yerr";
239?>