일반적으로 원형의 형태로는 우리가 알고 있는것처럼 위도 경도 선을 한점에서 나눌수 없으나, 한점에서 나눌수 있도록 적용하였습니다.
JS SCRIPT
polarimagecallback = function(isArctic, context)
{
if (context) {
if (isArctic == true) {
if (articfirst == true) {
// 그리기
var centerX = context.canvas.width / 2;
var centerY = context.canvas.height / 2;
var radius = (context.canvas.width / 2) - 10;
context.beginPath();
context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
context.lineWidth = 5;
context.strokeStyle = 'red';
context.stroke();
articfirst = false;
return true;
}
}
else {
if (antarcticfirst == true) {
// 그리기
var centerX = context.canvas.width / 2;
var centerY = context.canvas.height / 2;
var radius = (context.canvas.width / 2) - 10;
context.beginPath();
context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
context.lineWidth = 5;
context.strokeStyle = 'green';
context.stroke();
antarcticfirst = false;
return true;
}
}
}
return false;
}
clearPolarimaga = function()
{
var context = cmworld3Viewer.polar.getPolarimageContext(true);
context.clearRect(0, 0, context.canvas.width, context.canvas.height);
//var w = context.canvas.width;
//context.canvas.width = 1;
//context.canvas.width = w;
cmworld3Viewer.polar.updatePolarImage();
}
directDraw = function ()
{
// 극지방에 그려질 수 있는 범위를 늘려보자.
cmworld3Viewer.polar.setPolarImageRadius(40);
var image1 = document.createElement('img');
image1.addEventListener('load', function (event)
{
// 극지의 이미지 context를 가져옴.
// 파라메터가 true이면 북극의 이미지를 false면 남극의 이미지를 가져옴.
// 그래픽 작업은 일반적인 contex를 다루는 함수와 동일함.
var context = cmworld3Viewer.polar.getPolarimageContext(true);
context.globalAlpha = 1.0;
var cWidth = context.canvas.width;
{
context.save();
// move to the center of the canvas
// 중심으로 이동.
context.translate(cWidth / 2, cWidth / 2);
// 회전.
context.rotate(90 * Math.PI / 180);
//context.drawImage(image1, -image1.width / 2, -image1.width / 2);
context.drawImage(image1, 0, 0, image1.width, image1.height, -(cWidth / 2), -(cWidth/2), cWidth, cWidth);
//context.drawImage(image1, 0, 0, image1.width, image1.height, 0,0, 1024,1024);
context.restore();
context.fillStyle = "red";
var pt = new THREE.Vector2();
for (var i = 0.0; i < 127; i++)
{
pt = cmworld3Viewer.polar.getPolarImagePosition(i, 80);
context.fillRect(pt.x -2 , pt.y - 2, 4, 4);
}
}
context = cmworld3Viewer.polar.getPolarimageContext(false);
context.globalAlpha = 1.0;
var cWidth = context.canvas.width;
{
context.fillStyle = "green";
var pt = new THREE.Vector2();
for (var i = 0.0; i < 127; i++)
{
pt = cmworld3Viewer.polar.getPolarImagePosition(i, -80);
context.fillRect(pt.x - 2, pt.y - 2, 4, 4);
}
}
// 이미지를 갱신하였다면, cmworld3Viewer에 갱신 되었다고 알려 주어야 함
cmworld3Viewer.polar.updatePolarImage();
}, false);
image1.src = "이미지 경로";
}
example = function () {
cmworld3Viewer.polar.enablePolarImageOverlay(30, 1024, polarimagecallback)
var eye_x = 92.28543980222322;
var eye_y = 79.45410790253543;
var eye_h = 3367027.811760755;
var look_x = 79.3173629383541;
var look_y = 82.13269451458342;
var look_h = 10;
cmworld3Viewer.gotoLookAt(eye_x, eye_y, eye_h, look_x, look_y, look_h);
}