레이블이 PROCESSING인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PROCESSING인 게시물을 표시합니다. 모든 게시물 표시

2014년 11월 14일 금요일

Heart Plot V0.1

Heart Plot V0.1









// Heart Plot V0.1
// 20141115
// by DongKim


Heart Heart1;
int pX=0;
int pY=0;
int pScale=10;

void setup() {
    size(640,480);
    background(255,230,200);
    smooth();
    frameRate(2);
    noStroke();
    fill(255,0,0);
    
    Heart1 = new Heart(this);
} 

void draw()
{
    background(255,230,200);
    pX=random(0,width);
    pY=random(0,height);
    pScale=random(1,10);

    pushMatrix();
    translate(pX,pY);
    rotate(random(0,2*PI));
    Heart1.Plot(pScale,random(200,255),random(0,200),random(0,200));
    popMatrix();

}

class Heart
{
    float scale;
    int R,G,B;
    
    void Heart()
    {
        scale=30.0;
        R=255;  G=0;  B=0;
    }
    
    void Plot(float temp_scale, int temp_R, int temp_G, int temp_B)
    {
        int i=0;
        float t=0.0;
        float x,y;
        
        scale=temp_scale;
        R=temp_R;  G=temp_G;  B=temp_G;

        fill(R,G,B);

        while (i<2000)
        {
            i++;
            t=t+(2*PI)/float(i);
            x=16*pow(sin(t),3);  x=scale*x;
            y=13*cos(t) - 5*cos(2*t) - 2*cos(3*t) - cos(4*t);  y=scale*y;
            ellipse(x,-y,1,1);
        }
    }
}





아... 잠이 안온다. 불안장애 같은건가.


2014년 11월 6일 목요일

Including some JavaScripts into my Google Blogger (2)


Including some JavaScripts into my Google Blogger (2)
내 구글 블로그에 몇가지 자바스크립트 기능 추가하기 (2)


기존에 구글 블로거 템플릿의 <head> 안에 추가한 JavaScript들은, 모두 해당 JS들의 원래 제공처 위치를 링크시킨 것이었다.
그래서 그것들을 전부 다운로드 받아, 나의 구글 드라이브에 저장하고 웹공유를 하도록 설정한 다음 다시 고쳐써서 적용하여 보았다.




 <link href='https://www.googledrive.com/host/0B3VzdmodvgcINEMtRTA3SVVUM28/highlight/styles/monokai_sublime.css' rel='stylesheet'/>
    <script src='https://www.googledrive.com/host/0B3VzdmodvgcINEMtRTA3SVVUM28/highlight/highlight.pack.js'/>
    <script>hljs.initHighlightingOnLoad();</script>


    <script src='https://www.googledrive.com/host/0B3VzdmodvgcINEMtRTA3SVVUM28/MathJax/MathJax.js' type='text/javascript'>    
    MathJax.Hub.Config({
        HTML: ["input/TeX","output/HTML-CSS"],
        TeX: { extensions: ["AMSmath.js","AMSsymbols.js"], 
               equationNumbers: { autoNumber: "AMS" } },
        extensions: ["tex2jax.js"],
        jax: ["input/TeX","output/HTML-CSS"],
        tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ],
                   displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
                   processEscapes: true },
        "HTML-CSS": { availableFonts: ["TeX"],
                      linebreaks: { automatic: true } }
    });
    </script>


    <script src='https://www.googledrive.com/host/0B3VzdmodvgcINEMtRTA3SVVUM28/ProcessingJS/processing.min.js' type='text/javascript'/>


Highlight 잘 먹는거 확인 되었고..


$\frac{1}{2x_k^2+3x_k-7}$

$\frac{\partial y}{\partial x}$

$\sum_{i=1}\frac{\partial y}{\partial x}^{n}{X_i^2}$

$\sum_{i=1}^{n}{X_i^2}$

$\begin{pmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{pmatrix}$

$\begin{pmatrix} a_{11} & \cdots & a_{1n}\\ \vdots & \ddots & \vdots\\ a_{m1} & \cdots & a_{mn} \end{pmatrix}$

$\overrightarrow{AB}$

$\vec{F}=m\vec{a}$

$e=m c^2 $

$\vec{F}=m \frac{d \vec{v}}{dt} + \vec{v}\frac{dm}{dt}$


MathJax 역시 잘 먹는다.
다만 상당히 무겁다는게 느껴진다.
가볍게 하려면 옵션을 이리저리 만져줘야 할텐데, 일단 머리아프니깐 생략.

마지막으로 Processing.js는....?
Processing Script는 아래의 것을 사용해 본다.


<script type="application/processing">


// 2-links arm
// for test of pushMatrix() & popMatrix()
// by dongkim

int arm1_length = 70;
int arm1_width = 20;
int arm2_length = 70;
int arm2_width = 20;

void setup()
{
  size(300,300);
}

void draw()
{
  background(0);
  
  pushMatrix();
  translate(width/2,height/2);
  rotate(PI*mouseX/(width/2)+2*PI);
  rect(-arm1_width/2,0,arm1_width,arm1_length);
    pushMatrix();
    translate(0,arm1_length);
    rotate(PI*mouseY/(height/2)-PI);
    rect(-arm2_width/2,0,arm2_width,arm2_length);
    popMatrix();
  popMatrix();
}


</script>
<canvas></canvas>



이걸 집어넣고 돌려보면....



안나오네.. 쩝. 망했다.
뭐가 잘못된거지...  ㅠㅠ
음.  구글 드라이브 동기화가 아직 덜 됐구나..
동기화 다 되고 나서 확인해 봐야겠음.

---> 동기화 되어서 파일 다 올라간 후에 확인해 보니 잘 되넹.
이전에 github에서 제공하는 URL을 script로 링크시켰을 때는 파이어폭스 이외에는 작동이 안 되던데, 구글 드라이브에 설치하고 해 보니깐 잘 된다.
이유는 모르겠....


* 확인해 본 환경
1.윈도우7 : 파폭,크롬,IE
2. 리눅스 : 파폭,크롬
3. 안드로이드 : 파폭, 크롬, 돌핀

--> 안드로이드에서는 마우스 대신 터치 인터페이스라서, 마우스와는 미묘하게 다른 것 같다.
Processing.js를 심어넣고 위에 걸 해 보니깐 브라우저의 마우스 입력과 겹쳐서 제대로 동작이 안 되는 것 처럼 보인다.  하지만 sketchpad.cc에서 제공하는 Processing.js 서비스에서는 팽팽 날아다닌다.  똑같은 스크립트인데 뭐가 다른 거지....

어설프게 뭘 해 보려니깐 제대로 되는게 없다.  쩝.


Including some JavaScripts into my Google Blogger (1)



Including some JavaScripts into my Google Blogger (1)

내 구글 블로그에 몇가지 자바스크립트 기능 추가하기 (1)


구글 블로거에 외부의 자바스크립트 기능을 추가하기 위해서는 다음의 절차를 따른다.


우선 (1)번의 '디자인' 버튼을 누른다.



그러면 위의 화면으로 들어가 지는데, (2)번의 '템플릿' 버튼을 눌러서 들어간 후에, (3)번의 'HTML 편집' 버튼을 누른다.





그러면 템플릿의 소스코드가 나오는데, 여기의 <head>...</head> 안에 (4),(5),(6)번 내용을 써 넣어 준다.

그러면 모든 블로그의 페이지들에 해당 자바스크립트 기능이 먹어들어간다.
여기서 시도한 (4),(5),(6)번의 내용은 아래의 3가지 기능을 작동하게 해 준다.
  1. 소스코드 하일라이팅 기능 추가
  2. 수식 편집 및 표현 기능 추가
  3. Processing 스크립트 실행 기능 추가


각 기능을 구현하기 위해 선택한 자바스크립트들은 다음과 같다.


  1. Highlight.js
  2. MathJax.js
  3. Processing.js


들어간 태그의 내용은 다음과 같다.




<link href='//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/styles/zenburn.min.css' rel='stylesheet'/>
<script src='//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/highlight.min.js'/>
<script>hljs.initHighlightingOnLoad();</script>


<script src='http://cdn.mathjax.org/mathjax/latest/MathJax.js' type='text/javascript'>    
    MathJax.Hub.Config({
        HTML: ["input/TeX","output/HTML-CSS"],
        TeX: { extensions: ["AMSmath.js","AMSsymbols.js"], 
               equationNumbers: { autoNumber: "AMS" } },
        extensions: ["tex2jax.js"],
        jax: ["input/TeX","output/HTML-CSS"],
        tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ],
                   displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
                   processEscapes: true },
        "HTML-CSS": { availableFonts: ["TeX"],
                      linebreaks: { automatic: true } }
    });
</script>


<script src='https://raw.githubusercontent.com/processing-js/processing-js/v1.4.8/processing.min.js' type='text/javascript'/>




적용후 확인을 해보니...


Highlight.js 는 위와 같이 잘되고 있다.

이때 사용된 <pre><code>...</code><pre> 태그를 사용해서 그 안에 내용을 넣으면 된다고 한다.
다만 html 소스 내용을 넣을 때, 각괄호 '<' 같은 것들 때문에 제대로 안 될 때는...

http://www.jeremymartin.name/projects.php?project=asciible

요기 들어가서 소스코드 자체를 특수문자 시스템으로 변환해 준 후에 복사해서 퍼 넣어주면 된다.



MathJax.js 역시 확인을 해 보면


$\frac{1}{3x^2 +2x-1}$


위 내용은 아래와 같이 html에서 집어 넣어준 것이다.


<span style="font-size: x-large;">
$\frac{1}{3x^2 +2x-1}$
</span>


잘 나온다.
사이즈는 블로거 온라인 편집기상에서 그냥 조절해 준 것이다.

위의 MathJax.js를 활성화시켜주는 트리거링 코드가 , 같은 것들로 설정되어 있으므로 가급적 이 블로그에서는 이 문자들을 사용하지 않는 것이 좋겠다.

하지만 Processing.js는 크롬/IE에서 안된다.
Firefox에서는 되기도 하고 안되기도 한다. (이리저리 바꿔본 결과)



나중에 시간 나면 고쳐 봐야징...
그나저나 구글 블로거는 아무리 봐도 뭔가 어설프게 만들다 만 것 같다.
구글플러스 연계된 모바일 중심의 다른 구글 서비스들과는 완성도 면에서 왠지...
모르긴 몰라도 구글 내부적으로도 아마 힘없는 개발팀에 속할 듯...


********  Ref.

*** Highlight.js 관련 참고
https://highlightjs.org/
http://istudy.tistory.com/255


*** MathJax.js 관련 참고
* 참고
http://holdenweb.blogspot.kr/2011/11/blogging-mathematics.html
http://docs.mathjax.org/en/latest/start.html#mathjax-cdn
http://webapps.stackexchange.com/questions/47428/mathjax-setting-in-blogger
http://dlimpid.tistory.com/entry/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%97%90%EC%84%9C-Markdown%EA%B3%BC-MathJax-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0



2014년 10월 22일 수요일

Processing.js in Blogger (TEST)







<html>
<head>
    <script src="https://raw.githubusercontent.com/processing-js/processing-js/v1.4.8/processing.min.js" type="text/javascript"></script>
</head>


<body>
<script type="application/processing">

소스코드 from https://github.com/whyi/Delaunay/blob/master/delaunay.pde

</script>
<canvas></canvas>
</body>
</html>