NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    스크립트 엔지엠 에디터를 이용해서 동그라미 그리기. (feat. COS, SIN)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 에디터에는 수학 관련 함수들도 포함되어 있는데요~ 코사인과 사인을 이용해서 동그라미를 그려줄 수 있습니다. 첨부된 스크립트를 실행하면 아래와 같이 동그라미가 그려지는걸 볼 수 있습니다. 이 방법 말고도 2중 [ For 반복 ] 액션으로 만들수도 있습니다.

    m0NJguk.gif

     

     

    스크립트를 열어보면 아래와 같이 만들어져 있는데요. 동그라미를 그리는 방법은 여러가지가 있습니다. 이 스크립트에서는 삼각함수(COS, SIN, TAN)를 이용해서 중심점을 기준으로 반지름이 100인 동그라미를 그립니다. 중심점 위치는 X가 320이고, Y는 380입니다. 이 값을 변경하면 원하는 위치에 동그라미를 그릴 수 있습니다.

    smtaA1E.png

     

     

    삼각 함수는 라디안을 사용하기 때문에 스마트 사칙 연산으로 X 좌표 라디안을 구합니다. 1도는 0.017... 라디안이고, 반지름을 곱해서 원하는 결과를 얻을 수 있습니다. 이렇게 기호가 반대인 Y 좌표를 구할 수 있습니다. X좌표는 코사인을 사용하고, Y 좌표는 사인으로 값을 계산할 수 있습니다.

    1KpRlZT.png

     

     

    일반적으로 동그라미를 그릴 때 삼각함수를 이용하면 좌표는 0을 기준으로 반지름만큼 그려줍니다. 윈도우의 경우 0의 위치는 모니터의 좌상단이므로, 좌표를 보정해줘야 합니다. 반도체의 웨이퍼도 동그란 형태인데요. 뉴스에서 많이 보셨을겁니다. 흰색 방진복을 입고 동그란 뭔가를 들고 있는걸요~ 아무튼, 모니터의 좌표계로 변환하기 위해 시작 위치를 더해줬습니다. X는 320이고 Y는 380입니다. 이렇게하면 위에 동영상처럼 동그라미가 그려집니다.

    tmzWXwl.png

     

     

    3D 프로그래밍 환경(유니티, OpenGL, DirectX등등...)에서 제공 해주는 캔버스 또는 컨테이너나 폼과 같이 오브젝트를 담는 것들은 POINTF 자료형을 사용합니다. 물론, 2D 환경인 GDI+도 동일한데요. 윈도우 모니터의 경우 플로트(FLOAT, 실수)를 표현할 수 없으므로 올림, 내림 또는 반올림을 이용해서 정수로 만들어줘야 합니다.

    EwTt9yO.png

     

     

    정수로 변환한 X, Y를 문자열 연결로 좌표 형식으로 바꿔줍니다. 그래야~ 마우스 클릭에서 사용할 수 있거든요. 마우스 액션은 실수(FLOAT)를 좌표로 사용할 수 없습니다.

    v0ILOmP.png

     

     

    대부분은 동그라미를 그릴 때 삼각함수를 이용하지 않습니다. 언어마다 차이는 있겠지만, 도형을 그려주는 함수를 기본 제공하기 때문입니다. 그러나~ 반도체의 웨이퍼처럼 플랫존이나 노치를 시각화하려면 어쩔 수 없이 삼각함수를 이용해서 원을 그리고, 특정 앵글에서 노치(하단)를 표시해야 합니다. 데이타를 바인딩하지 않았지만, 장비 회사에 있을 때 만든 프로그램입니다. 오버레이에서 측정한 데이타를 넣으면 높이와 길이가 표시되고, Surface map이나 분석에 용이한 그래프를 만들어줍니다. 측정한 데이타가 작더라도 Interpolation(보간법)을 이용해서 부드럽게 표현이 가능합니다. 특정 맵에 좌표를 매핑하고, 서패이스 맵을 그릴 때 인터폴레이션을 하지 않으면 그럴듯한 그림이 나오지 않을뿐더러 끊기는 구간이 발생합니다.

     

     

    "동그라미1.ngs"는 좀 더 응용해서 달팽이관처럼 회전하면서 그려주게 만들었습니다. 수식을 잘 활용하면 지그재그로 이동하게 할수도 있고, 아래 그림처럼 중앙에서부터 밖으로 넓어지는 원형으로 돌면서 탐색할 수 있습니다. 삼각함수와 여러가지 변수를 이용하다보니 이해하는게 어려울 수 있지만, 기타 다른 매크로 프로그램들이 흉내낼 수 없는 막강한 기능입니다. 또한, 업무를 효율적으로 처리할 수 있고 유지보수성도 좋아집니다. 수식을 이해한다면 말이죠^^;

    9f72kpd.gif

     

     

    간단하게 동그라미 그리는 방법에 대해 알아봤습니다. 다음에는 머신 러닝의 중요한 핵심 알고리즘인 선형 회귀(Linear Regression, 리니어 리그레이션)에 대해 알아 볼께요. 현업에서 수율 관리나 어떤 그래프를 그릴 때 자주 사용되는 통계 알고리즘입니다. 아무튼~ 위 동영상을 보면 지금의 엔지엠과 비슷하다고 생각되지 않으신가요? 처음 H사에서 프로젝트 할 때 DevExpress를 알게 되었고 장비 회사로 이직하면서 여러가지 라이브러리를 실험적으로 적용 했었습니다. B사로 이직하면서 일에 치이다가 S사 프로젝트 매니저를 하면서 여유가 생겼네요. 요즘 워라벨이 보장되는 회사가 많아서 개인적으로 틈틈히 뭔가 만들 수 있는 환경이 되었습니다. 시간이 많이 남다보니 이것 저것 테스트 해보고, 검증해볼 수 있는데요. 그러다가 엔지엠 에디터도 만들게 되었습니다. 결국은 내가 만든 소프트웨어를 테스트하기 귀찮아서 자동화 툴을 만들게 되었습니다. 제품팀에 있을 때는 잘 사용했었죠. 지금은 고객사 프로젝트에 나와있다보니 소프트웨어 테스트에 이용할 수 없어서 아쉬움이 많이 남습니다.

     

    요즘 개발자들은 정말 시간이 많이 남아요. 그래서, 회사 다니면서 나만의 소프트웨어를 만들어서 배포하는 개발자가 점점 늘어나고 있습니다. 제 주위에도 투잡 뛰는 개발자가 많아졌거든요~ 뭔가 만들어 낼 수 있는 기술이 있다는건 정말 큰 장점입니다~ "이걸 만들어서 뭔가 될까?"라고 생각하기 보다는 일단 만들어서 서비스 해보고 평가를 받아보는게 중요합니다. 평가에 따라 개선하고 발전시켜 나가다보면 수익이 나는 새로운 잡(Job)이 될 수도 있으니까요. 3~6개월정도 만들고, 1년정도 서비스 해보는게 중요합니다. 단시간에 뭔가를 이룬다는건 도박밖에 없거든요^^;

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.