????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.3 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/appsrv.astacus.se/utm/ |
Upload File : |
<?php
$link = mysql_connect ("localhost", "root", "root123");
mysql_select_db ("UTM");
function calculateOrientation($p1, $p2, $p3) {
// Extrahera punkterna (P1 = vänster topp, P2 = höger topp, P3 = mitten)
list($easting1, $northing1, $altitude1) = $p1;
list($easting2, $northing2, $altitude2) = $p2;
list($easting3, $northing3, $altitude3) = $p3;
// Invertera höjd (altitude) för att matcha NED-ramen
$altitude1 = -$altitude1;
$altitude2 = -$altitude2;
$altitude3 = -$altitude3;
// Beräkna vektorer för P1-P2 (horisontell) och P1-P3 (vertikal)
$v1 = [$easting2 - $easting1, $northing2 - $northing1, $altitude2 - $altitude1]; // Horisontell linje P1-P2
$v2 = [$easting3 - $easting1, $northing3 - $northing1, $altitude3 - $altitude1]; // Vertikal linje P1-P3
// Korsprodukt för att beräkna normalvektorn
$n = [
$v1[1] * $v2[2] - $v1[2] * $v2[1],
$v1[2] * $v2[0] - $v1[0] * $v2[2],
$v1[0] * $v2[1] - $v1[1] * $v2[0]
];
// Beräkna heading som rotationen runt Z-axeln (xy-planet)
$heading = rad2deg(atan2($northing2 - $northing1, $easting2 - $easting1));
// Om heading är negativ, lägg till 360 för att få det inom intervallet 0-360 grader
if ($heading < 0) {
$heading += 360;
}
$heading = 360 - $heading;
// Beräkna roll: lutningen av linjen P1-P2 i förhållande till horisontalplanet
$delta_z = $altitude2 - $altitude1;
$delta_xy = sqrt(pow(($easting2 - $easting1), 2) + pow(($northing2 - $northing1), 2));
$roll = rad2deg(atan2($delta_z, $delta_xy)) -180;
// Pitch: pitch här speglar lutningen framåt eller bakåt
$pitch = rad2deg(atan2($n[2], sqrt($n[0] * $n[0] + $n[1] * $n[1]))) * -1;
return [
'roll' => $roll,
'pitch' => $pitch,
'heading' => $heading
];
}
$sql = "SELECT * FROM tblCoordinates Order By TargetID, PointId";
$result = mysql_query($sql);
$point = array();
while ($row = mysql_fetch_assoc($result)){
$point[] = array($row['TargetId'],$row['PointId'],$row['Easting'], $row['Northing'],$row['Altitude']);
}
foreach($point as $p){
if($p[1] == 1){
$p1 = array($p[2], $p[3], $p[4]);
}
if($p[1] == 2){
$p2 = array($p[2], $p[3], $p[4]);
}
if($p[1] == 3){
$p3 = array($p[2], $p[3], $p[4]);
}
if($p[1] == 3){
$result = calculateOrientation($p1, $p2, $p3);
echo("Target: ".$p[0] ."<br>");
echo("Heading: " .$result['heading']."<br>");
echo("Pitch: " .$result['pitch']."<br>");
echo("Roll: " .$result['roll']."<br><br>");
}
}
?>