Войти
ПрограммированиеФорумВеб

Отрисовка полигона в wgs84 коориднатах

#0
2:14, 14 мая 2012

Всем привет!
Только разбираюсь в компьюетрной графике и вознки вопрос: как отрендерить на сцене в wgs84 коориднатах полигон? Вот что пробую вытворить с полигоном домика на three.js:

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 1, 1000 );
    camera.position.set( 0, 150, 500 );
    scene.add( camera );

    parent = new THREE.Object3D();
    parent.position.y = 0;
    scene.add( parent );

    var polygon= [];



    polygon.push( new THREE.Vector2 ( 82.9017821750859,54.9812499669873 ) );
    polygon.push( new THREE.Vector2 ( 82.9018496332202,54.9812124201254 ) );
    polygon.push( new THREE.Vector2 ( 82.9019797316459,54.9812899303415 ) );
    polygon.push( new THREE.Vector2 ( 82.9017774960309,54.9814022093302 ) );
    polygon.push( new THREE.Vector2 ( 82.9010461943743,54.9809680123995 ) );
    polygon.push( new THREE.Vector2 ( 82.9017755777412,54.9805617585645 ) );
    polygon.push( new THREE.Vector2 ( 82.9019059904702,54.9806393538149 ) );
    polygon.push( new THREE.Vector2 ( 82.9013115194163,54.9809704255186 ) );
    polygon.push( new THREE.Vector2 ( 82.9017821750859,54.9812499669873 ) );

    var poligonShape = new THREE.Shape( polygon );

    var polygonPoints = poligonShape.createPointsGeometry();

    var line = new THREE.Line( poligonPoints, new THREE.LineBasicMaterial( { color: 0xffaa00, linewidth: 2 } ) );
    line.position.set( 0, 0, 0 );
    parent.add( line );

    renderer = new THREE.WebGLRenderer( { antialias: true } );
    renderer.setSize( window.innerWidth, window.innerHeight );

Сцена рендерится, но ничего не видно. Если для эксперимента последнюю точку дублирую и делаю координаты 820,549, то на экране рисуется одна линия. Если глянуть как поступает с коориднатами рендеринг на kothicjs например(понятно, что там 2D, но я пока ж тока разбираюсь), то пересчет координат происходит из  900913 проекции в систему отсчета от нижнего правого угла тайла/холста. Может тут так же? Отсчитывать координаты от правого нижнего угла холста? Как вообще обычно географические данные мапятся в сцену поделитесь опытом пжлста.


#1
3:04, 14 мая 2012

Путем проекции географических координат на цилиндр. Для этого подойдут формулы перехода из углов в метры, например wgs84 -> utm

#2
13:39, 14 мая 2012

Уху, я пробовал. Например при репроекции в UTM полигона из примера выше получаем:
621703.319960351 6094359.34447706,
621707.749960354 6094355.28447706,
621715.839960356 6094364.13447705,
621702.559960351 6094376.27447705,
621657.079960332 6094326.69447707,
621704.979960353 6094282.76447708,
621713.089960355 6094291.62447708,
621674.049960339 6094327.42447707,
621703.319960351 6094359.34447706

Довольно большие числа и я как не крутил камеру, увидеть опять ничего не смог(понятно что я в пространстве ориентируюсь пока только с нарисованной системой координат)) ). Может числа смаштабировать как-то?

#3
13:48, 14 мая 2012

wDevil
> Может числа смаштабировать
Смасштабируй. Или используй матрицу для своего объекта, где будет масштаб и перенос.

ПрограммированиеФорумВеб

Тема в архиве.