Iso/iec jtc 1/sc 29 N



Yüklə 1,86 Mb.
səhifə18/19
tarix19.10.2018
ölçüsü1,86 Mb.
#74906
növüApplication form
1   ...   11   12   13   14   15   16   17   18   19

ARAF compression


ARAF supports compressed media representation as specified by the following set of MPEG/JPEG standards:

Media Type

Compression tool name

Reference standard

Image

JPEG

ISO/IEC 10918

JPEG2000

ISO/IEC 15444

Video

Visual

ISO/IEC 14496-2

Advanced Video Coding

ISO/IEC 14496-10

Audio

MP3

ISO/IEC-11172-3

Advanced Audio Coding

ISO/IEC 14496-3

3D Graphics

Scalable Complexity Mesh Coding

ISO/IEC 14496-16

Bone-based Animation

ISO/IEC 14496-16

Scenes

BIFS

ISO/IEC 14496-11



(informative)
100

Map related Prototypes Implementation


PROTO MapMarker [

exposedField SFString name ""

exposedField SFVec3f position 0 0 0

exposedField SFBool clickable TRUE

exposedField SFBool visible TRUE

exposedField SFBool enabled TRUE

exposedField MFNode markerShape []

eventIn SFBool doClick

eventIn SFVec2f setPlayerGPS

eventIn SFVec2f setMapGPSCenter

eventIn SFInt32 setMapZoomLevel

eventOut SFBool onClick

eventOut SFString onPlayerAround

eventOut SFString onPlayerLeft

]

{

DEF MARKER_SW Switch {

whichChoice 0

choice [

Transform2D {

children [

DEF TS TouchSensor {}

DEF MARKER_NODE Transform2D {

translation 0 0

children IS markerShape

}

]

}

]

}



DEF UI_MARKER_SCRIPT Script {

field SFNode script USE UI_MARKER_SCRIPT

field SFNode main_sw USE MARKER_SW

field SFNode markerNode USE MARKER_NODE

field SFNode ts USE TS

eventIn SFString setName IS name

eventIn SFVec3f setPosition IS position

eventIn SFBool setVisible IS visible

eventIn SFBool setClickable IS clickable

eventIn SFBool setEnable IS enabled

eventIn MFNode setMarkerShape IS markerShape

eventIn SFInt32 updateZoomLevel IS setMapZoomLevel

eventIn SFVec2f updateMapGPSCenter IS setMapGPSCenter

eventIn SFVec2f updatePlayerGPS IS setPlayerGPS

eventIn SFBool fakeClick IS doClick

eventIn SFBool clicked

eventOut SFBool onClick IS onClick

eventOut SFString playerAround IS onPlayerAround

eventOut SFString playerLeft IS onPlayerLeft
url ["

javascript:



function initialize() {

# Equatorial radius (m)

eqRadius = 6378137;

tileSize = 256;

playerAround = false;

originShift = 2 * Math.PI * eqRadius / 2.0;

initialResolution = 2 * Math.PI * eqRadius / tileSize;

mapGPSCenter = new SFVec2f ();

mapZoomLevel = 0;

isEnabled = false;

isClickable = false;

isVisible = false;

markerName = 'm_'+Math.random().toString(36).substr(2, 5);

markerPos = new SFVec3f ();

}



function fakeClick(val) {

clicked(val);

}



function setMarkerPositionOnMap() {

if (!mapGPSCenter) return;

markerCoord = LatLonToPixels(markerPos[0], markerPos[1]);

mapCenterCoord = LatLonToPixels(mapGPSCenter[0], mapGPSCenter[1]);

markerNode.translation[0] = markerCoord[0] - mapCenterCoord[0];

markerNode.translation[1] = markerCoord[1] - mapCenterCoord[1];

print ('[ MARKER ] - ' + markerName + ': UPDATE POSITION ON MAP : ' + markerNode.translation);

}



function setName(name) {

if (name == '') return;

print ('[---------------------------------------------------------]');

print ('[ MARKER ] - ' + markerName + ': UPDATE NAME to ' + name);

markerName = name;

}



function clicked(val) {

if (!val) return;

print ('[ MARKER ] - ' + markerName + ': CLICKED!');

onClick = true;

}



function setEnable(val) {

isEnabled = val;

if (val) {

print ('[ MARKER ] - ' + markerName + ': SET ENABLED');

}

else {

print ('[ MARKER ] - ' + markerName + ': SET DISABLED');

}

}



function setClickable(val) {

ts.enabled = val;

isClickable = val;

if (val) {

print ('[ MARKER ] - ' + markerName + ': SET CLICKABLE');

}

else {

print ('[ MARKER ] - ' + markerName + ': SET UNCLICKABLE');

}

}



function setPosition(gpsPos) {

if ( (gpsPos.x == 0) && (gpsPos.y == 0) && (gpsPos.z == 0) ) {

return;

}

print ('[ MARKER ] - ' + markerName + ': SET POSITION: ' + gpsPos);

markerPos = gpsPos;

setMarkerPositionOnMap();

}



function setMarkerShape(markerShape) {

if (typeof(markerShape) == 'undefined') return;

if (markerShape.length == 0) {

print ('[ MARKER ] - ' + markerName + ': markerShape is empty!');

print ('[ MARKER ] - ' + markerName + ': Returning...');

return;

}

print ('[ MARKER ] - ' + markerName + ': SET NEW MARKER SHAPE');

}



function setVisible(val) {

if (val) {

main_sw.whichChoice = 0;

print ('[ MARKER ] - ' + markerName + ': SET VISIBLE');

}

else {

main_sw.whichChoice = -1;

print ('[ MARKER ] - ' + markerName + ': SET INVISIBLE');

}

isVisible = val;

}



function updatePlayerGPS(playerPos) {

if (playerPos.x == 0 || playerPos.y == 0) return;

distance = haversine_km(markerPos[0], markerPos[1], playerPos[0], playerPos[1]);

# to meters

distance *= 1000;

print ('[ MARKER ] - ' + markerName + ': DISTANCE TO PLAYER = ' + distance + '. Limit to reach: ' + markerPos[2]);

if (!playerAround && (distance <= markerPos[2]) && isEnabled) {

print ('[ MARKER ] - ' + markerName + ': Player around!');

playerAround = markerName;

}

else if (playerAround && (distance > markerPos[2]) && isEnabled) {

print ('[ MARKER ] - ' + markerName + ': Player left!');

playerLeft = markerName;

playerAround = false;

}

}



function updateZoomLevel(zoomLevel) {

if (zoomLevel <= 0) return;

print ('[ MARKER ] - ' + markerName + ': MAP ZOOM LEVEL: ' + zoomLevel);

mapZoomLevel = zoomLevel;

setMarkerPositionOnMap();

}



function updateMapGPSCenter(gpsCenter) {

if (gpsCenter[0] == 0.0 && gpsCenter[1] == 0.0) return;

print ('[ MARKER ] - ' + markerName + ': Update MAP GPS CENTER: ' + gpsCenter);

mapGPSCenter = gpsCenter;

setMarkerPositionOnMap();

}



# START COMP_FUNCTIONS

# The following functions are used to compute distances between 2 GPS positions

# and converting GPS position to coordinates and vice-versa.

# These should not be changed
# Calculates distance between 2 points (lat1, long1) & (lat2, long2)

# http://en.wikipedia.org/wiki/Haversine_formula

# http://stackoverflow.com/questions/365826/calculate-distance-between-2-gps-coordinates

#

function haversine_km(lat1, long1, lat2, long2) {

d2r = Math.PI / 180;

d_latt = (lat2 - lat1) * d2r;

d_long = (long2 - long1) * d2r;

a = Math.sin(d_latt/2)*Math.sin(d_latt/2) + Math.cos(lat1 * d2r) * Math.cos(lat2 * d2r) * Math.sin(d_long/2)*Math.sin(d_long/2);

c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

return 6371 * c;

}



function LatLonToMeters(lat, lon ) {

mx = lon * originShift / 180.0;

my = Math.log( Math.tan((90 + lat) * Math.PI / 360.0 )) / (Math.PI / 180.0);

my = my * originShift / 180.0;

return new Array(mx, my);

}



function LatLonToPixels(lat, lon) {

ll2p = LatLonToMeters(lat, lon);

m2p = MetersToPixels(ll2p[0], ll2p[1], mapZoomLevel);

return new Array(m2p[0], m2p[1]);

}



function MetersToPixels(mx, my) {

res = Resolution();

px = (mx + originShift) / res;

py = (my + originShift) / res;

return new Array(px, py);

}



function Resolution() {

return initialResolution / (Math.pow(2,mapZoomLevel));

}
# END COMP_FUNCTIONS

"]

}

ROUTE TS.isActive TO UI_MARKER_SCRIPT.clicked

}


PROTO MapOverlay [

exposedField SFString name ""

exposedField SFBool visible TRUE

exposedField SFBool enabled TRUE

exposedField SFBool clickable TRUE

exposedField MFNode children []

exposedField MFString keywords []

eventIn MFNode addOverlayItems

eventIn MFNode removeOverlayItems

]

{

DEF MapOverlaySW Switch {

whichChoice 0

choice [

DEF MapOverlayOG OrderedGroup {

children IS children

}

]

}



DEF UI_MapOverlay_SCRIPT Script {

field SFNode og USE MapOverlayOG

field SFNode sw USE MapOverlaySW

eventIn SFString setOverlayName IS name

eventIn SFBool setVisible IS visible

eventIn SFBool setClickable IS clickable

eventIn SFBool setEnable IS enabled

eventIn MFNode addOverlayItems IS addOverlayItems

eventIn MFNode removeOverlayItems IS removeOverlayItems
url ["

javascript:



function initialize() {

mapOverlayName = 'mo_'+Math.random().toString(36).substr(2, 5);

}



function setOverlayName(name) {

if (name == '') return;

print ('[ MapOverlay ] - ' + mapOverlayName + ': UPDATE NAME to ' + name);

mapOverlayName = name;

}



function setEnable(val) {

if (val) {

for (i = 0; i < og.children.length; i++) {

og.children[i].enabled = true;

}

print ('[ MapOverlay ] - ' + mapOverlayName + ': SET ENABLE ');

}

else {

for (i = 0; i < og.children.length; i++) {

og.children[i].enabled = false;

}

print ('[ MapOverlay ] - ' + mapOverlayName + ': SET DISABLE ');

}

isEnabled = val;

}



function setVisible(val) {

if (val) {

print ('[ MapOverlay ] - ' + mapOverlayName + ': SET VISIBLE');

# sw.whichChoice = 0;

for (i = 0; i < og.children.length; i++) {

og.children[i].visible = true;

}

}

else {

print ('[ MapOverlay ] - ' + mapOverlayName + ': SET INVISIBLE');

# sw.whichChoice = -1;

for (i = 0; i < og.children.length; i++) {

og.children[i].visible = false;

}

}

isVisible = val;

}



function setClickable(val) {

if (val) {

for (i = 0; i < og.children.length; i++) {

og.children[i].clickable = true;

}

enabled = true;

print ('[ MapOverlay ] - ' + mapOverlayName + ': SET CLICKABLE');

}

else {

for (i = 0; i < og.children.length; i++) {

og.children[i].clickable = false;

}

enabled = false;

print ('[ MapOverlay ] - ' + mapOverlayName + ': SET UNCLICKABLE');

}

isClickable = val;

}



function addOverlayItems(marker) {

if (marker == null) return;

if (marker.length == 0) return;

og.addChildren = new MFNode(marker[0]);

print ('[ MapOverlay ] - ' + mapOverlayName + ': ADD new overlay item \\"' + marker[0].name + '\\"');

}



function removeOverlayItems(marker) {

if (marker == null) return;

if (marker.length == 0) return;

for (i = 0; i < og.children.length; i++) {

if (og.children[i].name == marker.name) {

og.removeChildren = new MFNode(og.children[i]);

print ('[ MapOverlay ] - ' + mapOverlayName + ': REMOVE overlay item \\"' + marker.name + '\\"');

return;

}

}

print ('[ MapOverlay ] - ' + mapOverlayName + ': COULD NOT FIND Overlay item \\"' + marker.name + '\\"!');

}

"]

}

}
Yüklə 1,86 Mb.

Dostları ilə paylaş:
1   ...   11   12   13   14   15   16   17   18   19




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə