본문으로 바로가기

언어라고 해야할지 그냥 자바를 이용한 좀 편리한 도구라고 해야할지 요즘 들어서 오히려 약간 혼돈을 느끼지만 여전히 취미생활처럼 Processing을 아~~주 쪼금씩 데리고 놀고 있습니다. 약간 뭔가 의도한데로 되는지 조차 혼란이 오는 요즘... 내가 현재 괜찮은 방향으로 잘 가고 있는지.. 뭐 이딴 이상한 생각 따위를 살짝 접고 평온한 마음으로 지내는 것으로는 확실히 요런 언어(혹은 도구)로 뭔가 새로운 것을 조금씩 공부해보는 것이 참 좋은것 같습니다. 뭐 아무튼 그렇게 처음 Processing이라는 아이를 제 블로그에서 소개[바로가기]한 이 후 (근데 그것도 2013년 9월이니 아무리 취미처럼하는 공부라도 참 진도가 느립니다.ㅠㅠ) 그래프를 그리는 이야기만 했었는데요. 이번에는 라이브러리 하나 소개할려고 합니다.



이름은 좀 귀엽지만 여하튼 Papaya라는 라이브러리입니다.[바로가기] 설치는 원체 Processing이 잘 설명되어 있으니 패스하구요. 요 아이로 사실 뭐 많은 것을 할 수 있겠지만... 제가 주목했던건 행렬 연산 때문입니다.



위에 보이는 것처럼 Papaya의 많은 기능 중에 행렬 연산만 놓고 보면, 행렬 덧셈, 곱셈 등등



또 콘술창에 행렬을 바로 프린트하는 것, 행렬 요소끼리 곱하는 것, 디터미넌트, 역행렬 등등 필요한 행렬 연산기능을 다가지고 있네요. 딱 원하던 것입니다.^^


import papaya.*;

float[][] y0 = {{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};

float theta = 30*3.14/180;
float a = 100;

void setup() {
	size(60,60);
	noLoop();
}

void draw() {
	float[][] T = Mat.multiply(RotZ(theta), TransX(a));

	float[][] yT = Mat.multiply(T, y0);

	println("Original Matrix == >");
	Mat.print(y0, 2);
	println("--------------------");
	println("transform Matrix == >");
	Mat.print(yT, 2);
}

float[][] RotZ(float theta) {
	return new float[][]{{cos(theta), -sin(theta), 0,0},{sin(theta), cos(theta), 0,0},{0,0,1,0},{0,0,0,1}};
}

float[][] TransX(float a) {
	return new float[][]{{1,0,0,a},{0,1,0,0},{0,0,1,0},{0,0,0,1}};
}


아주아주 간단한 예제 하나 보죠. 좀 더 좋은 예제는 어차피 기본으로 제공되니까요^^. 위에서 쓰인 RotZ는 흔히 기구학에서 많이 쓰는 Z축 중심의 회전행렬이구요. TransX는 x축 방향으로 병진 이동하는 행렬을 정의한 것입니다. 초기 y0라는 행렬을 정의하고, z축으로 30도만큼 회전한 후 x축 방향으로 100만큼 이동한 결과를 확인하는 것이지요. Papaya 라이브러리의 행렬 클래스에서 행렬 곱셈과 행렬 프린터 기능을 사용했습니다.



위 화면이 콘술에 나타난 결과입니다. 4열에 나온 결과가 보이네요. (0,0,0)이라는 점이 최종적으로는 (86.62, 49.98, 0)으로 이동했음을 알 수 있네요. 뭐 여하튼 오늘은 Papaya라는 귀여운 이름의 라이브러리 하나를 소개했습니다.^^ 아 그리고 GitHub에 위 에제를 올려 두었으니 뭐 허접하지만 예제의 다운로드를 문의하시는 분들을 위해 올린거니까 [바로가기]에서 받으시면 됩니다.^^



댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2014.11.06 08:25 신고

    행렬은 PinkWink님 블로그에 들어와야 들어보게 됩니다.ㅋㅋ

  2. BlogIcon 티나짱 2014.11.06 11:16 신고

    잘보고갑니다

  3. BlogIcon 세상속에서 2014.11.06 12:56 신고

    행렬 연산하기 포스팅 잘봤네요.

  4. BlogIcon cri1s 2014.11.06 19:41 신고

    역시 공부할 것이 많네요.
    공부엔 끝이 없나 봅니다.
    블로그 잘보고 가요.

  5. BlogIcon 스칼렛 오하라 2014.11.07 01:07 신고

    오랜만에 들렷네요
    그간 몸이 안좋아서 뜸햇답니다. 허리가 아파서,,

  6. BlogIcon 양군! 2014.11.07 06:37 신고

    행렬 연산하기에 대해서 정리 잘해주셔서 잘 보고 갑니다 ^^

  7. BlogIcon 복돌이^^ 2014.11.07 09:39 신고

    헉~~~ 이곳만 오면 어질어질....^^
    다녀갑니다. 행복한 하루 되세요

  8. BlogIcon 악랄가츠 2014.11.07 10:02 신고

    취미생활로 하시다니! 언어에 문외한이 저로서는 그저 신세계네요! ㄷㄷ

  9. BlogIcon 세상속에서 2014.11.07 16:24 신고

    주말 잘보내시고 수고하세요~

  10. BlogIcon 딸기향기 2014.11.10 00:29 신고

    라이브러리 필요시 만들어는 써 봤는데 다운 받아본 적은 한번도 없네요! github 저도 자주 이용하는데 pinkwink님꺼도 방문해봐야겠어요

  11. BlogIcon 워크뷰 2014.11.10 04:20 신고

    공부하고 싶어집니다^^