Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x3domlet
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
3
Issues
3
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Elphel
x3domlet
Commits
60cf1d18
Commit
60cf1d18
authored
Aug 01, 2017
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tilt, roll and alt fitting results apply dialog
parent
6796bdda
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
93 additions
and
27 deletions
+93
-27
ui_align.js
js/ui_align.js
+81
-18
viewer.html
viewer.html
+12
-9
No files found.
js/ui_align.js
View file @
60cf1d18
...
@@ -142,19 +142,19 @@ function x3dom_align_hll(){
...
@@ -142,19 +142,19 @@ function x3dom_align_hll(){
//convert to conventional range
//convert to conventional range
xyh
[
2
]
=
(
xyh
[
2
]
+
360
)
%
360
;
xyh
[
2
]
=
(
xyh
[
2
]
+
360
)
%
360
;
//init apply dialog
//init apply dialog
apply_alignment_dialog
([
x0
,
y0
,
h0
],
xyh
,
counter
,
s1
,
de
);
apply_alignment_dialog
_hll
([
x0
,
y0
,
h0
],
xyh
,
counter
,
s1
,
de
);
}
}
/*
/*
* ui dialog to apply or cancel results
* ui dialog to apply or cancel results
*/
*/
function
apply_alignment_dialog
(
xyh0
,
xyh1
,
c
,
e
,
de
){
function
apply_alignment_dialog
_hll
(
xyh0
,
xyh1
,
c
,
e
,
de
){
var
d
=
$
(
"<div>"
,{
id
:
"aa1_dialog"
});
var
d
=
$
(
"<div>"
,{
id
:
"aa1_dialog"
});
var
dc
=
$
([
var
dc
=
$
([
'<div>
Alignment algorithm results
</div>'
,
'<div>
Least squares fitting results for heading, latitude & longitude
</div>'
,
'<br/>'
,
'<br/>'
,
'<div>Error: <b>'
+
e
+
' °</b></div>'
,
'<div>Error: <b>'
+
e
+
' °</b></div>'
,
'<div>d<sup>-1</sup> Error: <b>'
+
de
+
' m<sup>-1</sup></b></div>'
,
'<div>d<sup>-1</sup> Error: <b>'
+
de
+
' m<sup>-1</sup></b></div>'
,
...
@@ -163,9 +163,9 @@ function apply_alignment_dialog(xyh0,xyh1,c,e,de){
...
@@ -163,9 +163,9 @@ function apply_alignment_dialog(xyh0,xyh1,c,e,de){
'<table>'
,
'<table>'
,
' <tr>'
,
' <tr>'
,
' <th></th>'
,
' <th></th>'
,
' <th>Latitude</th>'
,
' <th>Latitude
, °
</th>'
,
' <th>Longitude</th>'
,
' <th>Longitude
, °
</th>'
,
' <th>Heading</th>'
,
' <th>Heading
, °
</th>'
,
' </tr>'
,
' </tr>'
,
' <tr>'
,
' <tr>'
,
' <th>old</th>'
,
' <th>old</th>'
,
...
@@ -189,7 +189,7 @@ function apply_alignment_dialog(xyh0,xyh1,c,e,de){
...
@@ -189,7 +189,7 @@ function apply_alignment_dialog(xyh0,xyh1,c,e,de){
var
b1
=
$
(
"<button>"
).
html
(
"apply"
);
var
b1
=
$
(
"<button>"
).
html
(
"apply"
);
b1
.
on
(
'click'
,
function
(){
b1
.
on
(
'click'
,
function
(){
apply_alignment
(
xyh1
);
apply_alignment
_hll
(
xyh1
);
b2
.
click
();
b2
.
click
();
});
});
...
@@ -208,7 +208,7 @@ function apply_alignment_dialog(xyh0,xyh1,c,e,de){
...
@@ -208,7 +208,7 @@ function apply_alignment_dialog(xyh0,xyh1,c,e,de){
/*
/*
* actual apply function
* actual apply function
*/
*/
function
apply_alignment
(
xyh
){
function
apply_alignment
_hll
(
xyh
){
var
Camera
=
Map
.
marker
;
var
Camera
=
Map
.
marker
;
...
@@ -280,6 +280,8 @@ function x3dom_align_art(){
...
@@ -280,6 +280,8 @@ function x3dom_align_art(){
var
result
=
numbers
.
calculus
.
GaussNewton
([
0
,
0
],
Data
.
markers
.
length
,
art2_r_i
,[
art2_dr_dx_i
,
art2_dr_da_i
],
epsilon
,
art2_w_i
);
var
result
=
numbers
.
calculus
.
GaussNewton
([
0
,
0
],
Data
.
markers
.
length
,
art2_r_i
,[
art2_dr_dx_i
,
art2_dr_da_i
],
epsilon
,
art2_w_i
);
console
.
log
(
result
);
console
.
log
(
result
);
result
.
v
[
0
]
=
result
.
v
[
0
]
*
180
/
Math
.
PI
;
apply_alignment_dialog_art
([
0
,
0
,
0
],[
result
.
v
[
0
],
0
,
result
.
v
[
1
]],
result
.
count
,
result
.
error
,
false
);
return
;
return
;
...
@@ -288,25 +290,86 @@ function x3dom_align_art(){
...
@@ -288,25 +290,86 @@ function x3dom_align_art(){
var
result
=
numbers
.
calculus
.
GaussNewton
([
0
,
0
,
0
],
Data
.
markers
.
length
,
art_r_i
,[
art_dr_dx_i
,
art_dr_dy_i
,
art_dr_da_i
],
epsilon
,
art_w_i
);
var
result
=
numbers
.
calculus
.
GaussNewton
([
0
,
0
,
0
],
Data
.
markers
.
length
,
art_r_i
,[
art_dr_dx_i
,
art_dr_dy_i
,
art_dr_da_i
],
epsilon
,
art_w_i
);
console
.
log
(
result
);
console
.
log
(
result
);
//convert to degs
result
.
v
[
0
]
=
result
.
v
[
0
]
*
180
/
Math
.
PI
;
result
.
v
[
1
]
=
result
.
v
[
1
]
*
180
/
Math
.
PI
;
apply_alignment_dialog_art
([
0
,
0
,
0
],
result
.
v
,
result
.
count
,
result
.
error
,
true
);
}
}
/*
function
apply_alignment_dialog_art
(
a0
,
a1
,
c
,
e
,
full
){
* not used
*/
function
align_roll
(){
console
.
log
(
"roll"
);
var
d
=
$
(
"<div>"
,{
id
:
"aa1_dialog"
});
var
dc
=
$
([
(
full
)?
'<div>Least squares fitting results for <b>tilt</b>, <b>roll</b> and <b>relative altitude</b></div>'
:
'<div>Least squares fitting results for <b>tilt</b> and <b>relative altitude</b> (roll=0)</div>'
,
'<br/>'
,
'<div>Error: <b>'
+
e
+
' m</b></div>'
,
'<div>Iterations: <b>'
+
c
+
'</b></div>'
,
'<div>'
,
'<table>'
,
' <tr>'
,
' <th></th>'
,
' <th>Tilt, °</th>'
,
(
full
)?
' <th>Roll, °</th>'
:
''
,
' <th>Altitude, m</th>'
,
' </tr>'
,
' <tr>'
,
' <th>old</th>'
,
' <td>'
+
a0
[
0
]
+
'</td>'
,
(
full
)?
' <td>'
+
a0
[
1
]
+
'</td>'
:
''
,
' <td>'
+
a0
[
2
]
+
'</td>'
,
' </tr>'
,
' <tr>'
,
' <th>new</th>'
,
' <td>'
+
a1
[
0
]
+
'</td>'
,
(
full
)?
' <td>'
+
a1
[
1
]
+
'</td>'
:
''
,
' <td>'
+
a1
[
2
]
+
'</td>'
,
' </tr>'
,
'</table>'
,
'</div>'
,
'<br/>'
].
join
(
'
\
n'
));
d
.
append
(
dc
);
var
b1
=
$
(
"<button>"
).
html
(
"apply"
);
b1
.
on
(
'click'
,
function
(){
apply_alignment_art
(
a1
);
b2
.
click
();
});
var
b2
=
$
(
"<button>"
).
html
(
"cancel"
);
b2
.
on
(
'click'
,
function
(){
$
(
"#aa1_dialog"
).
remove
();
});
d
.
append
(
$
(
"<div>"
).
append
(
b1
).
append
(
b2
));
$
(
"body"
).
append
(
d
);
}
}
function
apply_alignment_art
(
tra
){
var
Camera
=
Map
.
marker
;
Data
.
camera
.
tilt
=
tra
[
0
]
+
90
;
Data
.
camera
.
roll
=
tra
[
1
];
Data
.
camera
.
altitude
=
tra
[
2
];
/*
Data
.
camera
.
kml
.
tilt
=
tra
[
0
]
+
90
;
* not used
Data
.
camera
.
kml
.
roll
=
tra
[
1
];
*/
Data
.
camera
.
kml
.
altitude
=
tra
[
2
];
function
align_tilt
(){
console
.
log
(
"tilt"
);
Map
.
marker
.
setAltitude
(
tra
[
2
]);
// no need
Map
.
marker
.
_syncMeasureMarkersToBasePoint
();
x3d_initial_camera_placement
();
}
}
...
...
viewer.html
View file @
60cf1d18
...
@@ -74,23 +74,23 @@
...
@@ -74,23 +74,23 @@
<div
id=
'help_button'
>
?
</div>
<div
id=
'help_button'
>
?
</div>
<div
id=
'download_button'
title=
'Download 3d model (.obj & .x3d formats)'
></div>
<div
id=
'download_button'
title=
'Download 3d model (.obj & .x3d formats)'
></div>
<div
id=
'menu_button'
></div>
<div
id=
'menu_button'
></div>
<div
id=
'align_button'
title=
'Run least squares fit algorithm (Gauss-Newton) for camera heading and location using markers.
<div
id=
'align_button'
title=
'Run least squares fit
ting
algorithm (Gauss-Newton) for camera heading and location using markers.
Instructions:
Instructions:
1. Use approximate location control on the map to change initial approximation for the algorithm.
1. Use approximate location control on the map to change initial approximation for the algorithm.
2. Place at least 3 markers in the 3D scene (ctrl+click) - drag to position more precisely.
2. Place at least 3 markers in the 3D scene (ctrl+click) - drag to position more precisely.
3. Move all markers on the map to update their location - drag to position more precisely.
3. Move all markers on the map to update their location - drag to position more precisely.
4. Click this button - the results will appear in a dialog window with "apply"/"cancel"
4. Click this button - the results will appear in a dialog window with "apply"/"cancel"
.
5. To save the result click upload button (
Initial location and heading
) in the menu.'
class=
'edit'
></div>
5. To save the result click upload button (
map data
) in the menu.'
class=
'edit'
></div>
<!--<div id='align_tr_button' title='Align tilt and roll' class='edit'></div>-->
<!--<div id='align_tr_button' title='Align tilt and roll' class='edit'></div>-->
<div
id=
'align_tr_button'
title=
'Run least squares fit algorithm (Gauss-Newton) for camera tilt, roll and altitude (relative).
<div
id=
'align_tr_button'
title=
'Run least squares fit
ting
algorithm (Gauss-Newton) for camera tilt, roll and altitude (relative).
Instructions:
Instructions:
1. Place markers in the 3D scene (ctrl+click) - drag to position more precisely.
1. Place markers in the 3D scene (ctrl+click) - drag to position more precisely.
* 2 markers - adjust tilt and altitude, while roll = 0°
* 2 markers - adjust tilt and altitude, while roll = 0°
* 3+ markers - adjust tilt, roll and altitude
* 3+ markers - adjust tilt, roll and altitude
2. Move all markers on the map to update their location - drag to position more precisely.
2. Move all markers on the map to update their location - drag to position more precisely.
3. Turn on "Switch and Elevation control mode" for the map, drag markers over map to set approximate altitude relative to the camera.
3. Turn on "Switch and Elevation control mode" for the map, drag markers over map to set approximate altitude relative to the camera.
4. Click this button - the results will appear in
the browser console. Look for "v"-vector data
.
4. Click this button - the results will appear in
a dialog window with "apply"/"cancel"
.
'
class=
'experimental
'
></div>
5. To save the result click upload button (map data) in the menu.'
class=
'edit
'
></div>
</div>
</div>
<div
id=
'info-wrapper'
>
<div
id=
'info-wrapper'
>
...
@@ -155,12 +155,15 @@ Instructions:
...
@@ -155,12 +155,15 @@ Instructions:
<td>
</td>
<td>
</td>
</tr>
</tr>
<tr>
<tr>
<td
title=
'Adjust initial location and
heading
'
>
Edit mode
</td>
<td
title=
'Adjust initial location and
orientation
'
>
Edit mode
</td>
<td><input
id=
'edit'
type=
'checkbox'
class=
'my-check-box donothide'
/></td>
<td><input
id=
'edit'
type=
'checkbox'
class=
'my-check-box donothide'
/></td>
</tr>
</tr>
<tr
class=
'edit'
>
<tr
class=
'edit'
>
<td>
<td
title=
'.kml:
Initial location and heading:
* latitude and longitude,
* heading, tilt and roll angles
* altitude (relative to the ground)'
>
Camera initial position and orientation data:
</td>
</td>
<td>
<td>
<button
id=
'restorekml'
class=
'ic donothide'
title=
'restore'
><img
src=
'js/images/ic_file_download_black_48dp_1x.png'
class=
'icim donothide'
/></button>
<button
id=
'restorekml'
class=
'ic donothide'
title=
'restore'
><img
src=
'js/images/ic_file_download_black_48dp_1x.png'
class=
'icim donothide'
/></button>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment