달력

11

« 2017/11 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  

2008년에 일본의 전뇌코일이란 애니메이션을 봤고, 너무나 감동해서 감상평도 블로그에 올렸었다.

근 미래의 일본에서, 마치 드래곤볼의 스카우터처럼 생긴 안경을 쓰고 현실과 가상 세계를 넘나드는 아이들의 모험을 그린 이야기였다.


그 때의 글을 오랜만에 보니 참 불과 몇 년 사이에 세상이 많이 변했다. 휴대폰으로 지금처럼 수 많은 메시지를 보내고 알림을 받고 웹에 접속하는 등의 시대가 이렇게 열릴 줄이야. 인터넷 요금 폭탄에 벌벌 떨던게 엊그제 같은데..


그 동안에 입는(weareable) 컴퓨터에 대한 연구는 많았을 것이다. 하지만 구글 글래스 처럼 대중 앞에서 강렬한 임팩트를 준 적은 없었다. 아니, 구글이 발표했기 때문일까? 꿈만 같던 기술이 현실감있게 다가온다. 마치 곧 실현될 것 처럼 말이다.


전뇌코일과 같은 세상이 되려면, 나는 우선 모든 사물이 식별되어야 한다고 생각한다. 각각의 사물에 고유한 식별값을 보유하고, 

사물마다 자신의 GPS 위치를 알릴 수 있는 인프라가 생성되어야 애니메이션처럼 현실과 가상이 겹쳐질 수 있지 않을까?


증강 현실의 미래를 생각하니 오랜만에 흥분되서 잠이 오질 않았다. 그 때 꿈꿨던걸 어떻게 잊고 살 수 있었을까?







저작자 표시
신고
Posted by 에어림
2012.11.12 20:17

WebGL - Drawing ConvexHull 2012/OpenGL2012.11.12 20:17

임의의 점 10개를 생성하여, convexthull을 그려주는 webgl 예제.


아래는 정점 버퍼 초기화 함수. viewport의 크기는 640x480이다.


function initBuffers() {


var maxPoints = 10;
var i = 0
var vertices=[];
var points = [];

while(i!= maxPoints)
{
var vertexElement = [];
vertexElement.push(getRandomInt(0,640));
vertexElement.push(getRandomInt(0,480));
vertexElement.push(0);

points.push(vertexElement[0]);
points.push(vertexElement[1]);
points.push(0);

vertices.push(vertexElement);
i++;
}

var convexVertcies = [];
convexVertcies = getConvexHull(vertices);


var newVertices = [];
for (var idx in convexVertcies) {
var temp = convexVertcies[idx];

for (var i in temp) {
newVertices.push(temp[i][0]);
newVertices.push(temp[i][1]);
newVertices.push(temp[i][2]);
}

}

console.log(newVertices);
console.log(points);

lineBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, lineBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(newVertices), gl.STATIC_DRAW);

lineBuffer.itemSize = 3;
lineBuffer.numItems = newVertices.length / lineBuffer.itemSize;

pointsBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, pointsBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(points), gl.STATIC_DRAW);

pointsBuffer.itemSize = 3;
pointsBuffer.numItems = maxPoints;

}

아래는 convexhull을 만드는 함수. x좌표의 최소값과 최대값을 찾고, 두 개를 기준으로 상단 convexhull과 하단을
만든 후 결합한다. 알고리즘은 quickhull이라 불리는 것을 가져옴. 근데 이게 진짜 정확한 방식인지는 모르겠으나, 
여러번 테스트 결과는 이상없이 결과 나옴.

function getDistant(cpt, bl) {
var Vy = bl[1][0] - bl[0][0];
var Vx = bl[0][1] - bl[1][1];
return (Vx * (cpt[0] - bl[0][0]) + Vy * (cpt[1] -bl[0][1]))
}


function findMostDistantPointFromBaseLine(baseLine, points) {
var maxD = 0;
var maxPt = new Array();
var newPoints = new Array();
for (var idx in points) {
var pt = points[idx];
var d = getDistant(pt, baseLine);

if ( d > 0) {
newPoints.push(pt);
} else {
continue;
}

if ( d > maxD ) {
maxD = d;
maxPt = pt;
}

}
return {'maxPoint':maxPt, 'newPoints':newPoints}
}

var allBaseLines = new Array();
function buildConvexHull(baseLine, points) {

allBaseLines.push(baseLine)
var convexHullBaseLines = new Array();
var t = findMostDistantPointFromBaseLine(baseLine, points);
if (t.maxPoint.length) { // if there is still a point "outside" the base line
convexHullBaseLines =
convexHullBaseLines.concat(
buildConvexHull( [baseLine[0],t.maxPoint], t.newPoints)
);
convexHullBaseLines =
convexHullBaseLines.concat(
buildConvexHull( [t.maxPoint,baseLine[1]], t.newPoints)
);
return convexHullBaseLines;
} else { // if there is no more point "outside" the base line, the current base line is part of the convex hull
return [baseLine];
}
}

function getConvexHull(points) {
//find first baseline
var maxX, minX;
var maxPt, minPt;
for (var idx in points) {
var pt = points[idx];
if (pt[0] > maxX || !maxX) {
maxPt = pt;
maxX = pt[0];
}
if (pt[0] < minX || !minX) {
minPt = pt;
minX = pt[0];
}
}
var ch = [].concat(buildConvexHull([minPt, maxPt], points),
buildConvexHull([maxPt, minPt], points))
return ch;
}

결과는 다음과 같다.


전체 소스 코드는 아래에서 확인~

https://github.com/airyym/webgl/blob/master/triangulation.html




저작자 표시
신고
TAG webgl
Posted by 에어림
2012.11.09 12:02

Delete Android App using command console 분류없음2012.11.09 12:02

before proceeding you need to know the package name.

 

1. windows key + r -> cmd 

2. adb uninstall "package name" 

3. if the console shows "Success" message, the app is deleted successfully .

저작자 표시
신고
TAG Android
Posted by 에어림
2012.10.31 00:49

IT 혁신에 대한 생각 2012/Temporary2012.10.31 00:49

아이폰 이후로 세상이 참 많이 변했다.

불과 몇년 전만 해도 이렇게 어디에서나 인터넷에 접속하고 친구들과 얘기를 나눌 수 있을지는 상상도 못했다.

아니, 물론 상상은 했었지. 다만 이렇게 빨리 될줄이야.


소프트웨어를 개발하는 입장이지만 최근에 드는 생각은, 역시 유형의 하드웨어의 혁신이 선행되야 소프트웨어도

따라가는 게 아닐까 하는 짧은 생각이 든다. 컴퓨터의 등장이 있었으며, 전용선이 땅 밑에 깔리고, 무선 네트워크가 

사방팔방을 날아다니며, 우리 손에 작은 전자기기가 쥐어졌을 때, 우리의 삶은 다른 어떤 것보다 극적으로 변했던 것 같다.


하지만 벌써 혁신의 충격이 가시기 시작했다. 스마트폰은 대부분의 사람들에게 없어서는 안될 중요한 도구지만, 또한 흔해졌다. 

너무 빠르다 이 속도는. 스마트폰이라는 프레임에 미처 적응하기도 전에, 사회는 무언의 압박을 다시 시작한 것 같다.

"혁신하라!"


분명히 혁신은 다가올 것이다. 우리가 컴퓨터라는 책상 위의 커다란 틀에 갖혀 있는 동안, 스마트폰이 다가와 새로운 세상을 보여줬고, 우리는 또다시 스마트폰의 기준으로 모든 것을 바라보고 있다. 무엇이 스마트폰의 세상을 깨고 멋지게 등장할까?

나는 "구글 글래스"와 같은 디바이스가 다음 세대의 혁신을 이끌어갈 것이라 생각한다. 구글은 대단하다. 분명히 나와 비슷한 생각을 한, 훨씬 더 똑똑한 사람들이 벌써 혁신을 이끌 준비를 하고 있다. 구글 글래스가 부르짖는 혁신의 키워드는 "당신 자체가 똑똑해져라!" 가 아닐까? 이 멋진 디바이스와 함께 분명 우리는 더 똑똑해질 수 있을 것 같다.




저작자 표시
신고
Posted by 에어림
2012.10.06 21:09

골목사장 분투기 2012/Books2012.10.06 21:09

Zen Developer
골목 사장 분투기
강도현 저
예스24 | 애드온2


억대 연봉의 트레이더가 자영업으로써 소셜 카페를 운영하면서 겪게 되는 자영업자의 실태를 밝히는 책이다.

막연하게 알고 있던 권리금이 "바닥 권리", "영업 권리", "시설 권리" 등으로 나뉘어진다는 사실도 알 수 있었고,

대기업이 지역 시장에 진출하면서 붕괴되는 지역 경제의 현실에 대해서도 간접적으로 체험할 수 있는 책이었다.

책에서 반복적으로 소개하는 자영업의 현실은 작금의 자영업자들의 고통이, 내 주변의 지인 친척의 문제일 수 있고, 더 나아가서는 자신의 문제가 되는 것임을 일깨워주고 있었다. 

더불어 자영업의 문제는 더 이상 개인적인 차원에서 해결할 수 있는 성질의 것이 아닌, 대한민국의 총체적인 사회적 합의가 

필요하다고 역설하고 있다.  

저작자 표시
신고
Posted by 에어림