2021
-
Plane sweep algorithmR&E: research & education/Research 2021. 12. 4. 13:00
Plane sweep algorithm은 서로 겹치는 직사각형들이 주어질때, 직사각형이 총 차지하는 면적을 구하는 문제에 주로 사용됩니다. 아래 기술하는 알고리즘이 완벽한 plane sweep algorithm은 아니자만, 특별한 상황이 아닌 이상 plane sweep algorithm을 사용하는데는 지장이 없을 겁니다. 정확한 plane sweep algorithm은 아래 pdf를 참고해주시면 감사하겠습니다.아래 직사각형이 겹쳐졌을때 총 넓이를 구한다 가정해봅시다. 먼저 직사각형의 가로선들을 포함하는, x축에 평행한 직선들을 추출해냅니다. 직사각형의 가로선들로 Y[]배열을 만듭니다.배열을 만들어낸 후에는, 오름차순으로 정렬하고, 중복된 값들을 제거하여 Y[]배열을 완성합니다.Y[0]Y[1]Y[2]Y[3..
-
KMS14 : Python을 이용한 simple rotatable 3D 구현 프로그램Program_Light 2021. 11. 6. 13:00
이번에는 지난 포스팅을 발전시켜 구체를 형성하는 프로그램을 만들었습니다. 이 모델링 프로젝트의 최종 목표는 txt파일을 통해 원하는 도형을 직접 만들 수 있게 하는 것이지만, 일단은 프로젝트의 중간 프로젝트 느낌으로 구체 형상의 도형에 지구본 이미지를 입힐 수 있게 만들어보았습니다. 이후에 지구본에 특정 위치를 mapping 할 수 있는 기능을 추가할 생각입니다. consideration 참고로, 이 프로그램은 점을 A도 회전시킬 때 sinA + cosAi를 점에 곱하여 회전된 점의 좌표를 계산하는 방식을 취하고 있습니다. 또한, 모든 sin, cos함수는 degree각도를 사용합니다. (간지나고 표준적으로다가 원주각을 사용할려고 했는데, 그냥 degree로 했어요;;) sphere에 사용할 이미지가 소..
-
KMS14 : Python을 이용한 simple rotatable 3D 구현 프로그램 (source)Program_Light 2021. 10. 2. 13:00
이번에는 Python을 이용해서 간단한 회전 가능한 3D 체 모델링 프로그램을 만들어봤는데, 기능이 너무 조악해서 소올찍히 올릴지 말지 상당히 고민했습니다. 물론 지금 부족한 기능들은 모두 다음주에 추가해서 올릴 계획입니다. 지금 프로그램은 프로토? 라고 봐주세요 consideration 참고로, 이 프로그램은 점을 A도 회전시킬 때 sinA + cosAi를 점에 곱하여 회전된 점의 좌표를 계산하는 방식을 취하고 있습니다. 또한, 모든 sin, cos함수는 degree각도를 사용합니다. (간지나고 표준적으로다가 원주각을 사용할려고 했는데, 그냥 degree로 했어요;;) source source.py import tkinter import math import time import random # X c..
-
KMS13 : C++(Hurffman code)을 이용한 txt 파일 압축기 (source)Program_Light 2021. 9. 4. 13:00
이번에는 지난달에 올린 Huffman code를 이용한 영문 텍스트 파일을 모든 txt파일에서 사용할 수 있게 업그레이드 하는 동시에, 간단한 최적화를 진행해봤습니다. (물론 아직도 완벽한 최적화라 하기는 어렵지만요...) technonogy 지난 소스에서 사용한 최고의 기술은 huffman code의 string length만을 가지로 huffman code를 만들어내는 Binary tree를 기반으로 구현한, Huffman code length 만으로 코드를 복구하는 프로세스인데, 이 방식에 약간의 메모리 최적화를 진행했습니다. 지난 소스에서도 설명했듯 허프만 코드는 기본적으로 이진 트리 위에서 구현됩니다. 허프만 코드를 저장하는 이진 트리의 특징을 살려 코드의 길이만으로 코드를 최적화해내는 프로세스..
-
KMS13 : C++(Hurffman code)을 이용한영문 txt 파일 압축기 (source)Program_Light 2021. 8. 7. 13:00
이번 포스팅에 쓰인 프로그램은 사실 KMS프로그램에 속하지 않는 놈이었습니다. 국어 모의고사 지문에서 허프만 코드에 관한 설명이 나왔는데, 상당히 흥미롭더군요 (꼭 자기 분야가 아니면 흥미로움;;) 그래서 지문에 있던 내용을 기반으로 하여, 비효율적인 모든 부분들은 다 잘라내고 몇 가지 테크닉을 터 추가해서 코드를 짰습니다. 생각없이 이틀동안 두다다다 만들었는데, 예상 외로 결과가 뛰어나서 이렇게 KMS 13이라는 새로운 이름을 붙여 블로그에 내보내게 되었습니다. 개인적으로 C, algorithm, 암호화 이런것만 하고 C++은 vector나 priority_queue STL잠깐식 얹어 쓰는 상황이었는데, 이 프로그램을 개발하면서 대강 알고 있던 클래스를 사용했습니다. 물론 상속같은 것은 1도 없는 클래..
-
KMS12 : Python PyQt5를 이용한 줌 반자동 참가기 (source)Program_Light 2021. 7. 3. 13:00
지난번 만든 줌 반자동 참가기를 업그레이드 시켜 최종적으로 완성시켰습니다. 이전에 만든 줌 반자동 참가기 줌 반자동 참가기를 배포하고, 실제로 사용해보면서, 불편한 점들을 몇 가지 느꼈습니다. 우선, 그 날의 전체 시간표를 알 수 없다는 것입니다. UI는 간편할수록 좋다는 원칙에 따라서, 기존 줌 반자동 참가기는 그 시간대의 추천 과목만을 보여주었습니다. 즉, 그 날의 시간표는 알지 못했습니다. 실사용을 해보니, 이 부분은 상당히 불편한 부분이여서, 새 버전에는 그 날의 시간표또한 띄어지도록 만들었습니다. 두 번째로는, UI가 단색조라는 것입니다. 그래도 사용자가 사용하는 프로그램인 이상, UI에 신경을 쓰지 않을 수는 없었습니다. 과거 흑백의 UI를 가진 프로그램은 상당히 날것의 프로그램 느낌을 주어서..
-
KMS12 : Python PyQt5를 이용한 줌 반자동 참가기 (source)Program_Light 2021. 6. 5. 13:00
이번에 온라인 수업을 하게 되면서, 줌 방에 접속하기 위한 과정이 매우 불편하다는 것을 알아내었습니다. 매번 시간표 확인 -> ID, PW확인, -> 줌 실행 -> 접속은 너무 번거로운 과정이 아닙니까? 그래서 이번에는 실제로 실생활에 사용하기 위한 프로그램을 하나 만들어보았습니다. 원래 제 특기는 C이지만, 어렴풋이 친구에게 C언어로는 GUI하기가 빡세다는 말을 들어서, 파이썬을 새로 배웠습니다. 정식으로 파이썬을 배운적은 없지만 이전에도 파이썬을 이용해서 프로그램을 한 2번? 만들어 보았기 떄문에 그렇게 어렵지는 않았습니다. source,py (줌 초대 URL은 모두 정보 보호를 위해 바꾸었습니다) import datetime import sys import time import webbrowser ..
-
C언어 NIST a statistical Test Suite for Random and Pseudo random Number Generators for Ctyptographic Applications에 관련된 자료R&E: research & education/Research 2021. 5. 22. 13:00
오늘은 난수에 대한 자료들을 다루어보겠습니다NIST에서 권장하는 난수 생성의 기준이라고 할까요? 그정도 느낌의 자료입니다.영어로 된 자료는 많지만, 한국어로 된 자료는 없어서 내가 볼겸, 정보공유를 할 겸 해서 포스트를 하게 되었습니다일단 pdf를 먼저 올려드리도록 하겠습니다이 pdf는 어떻게 수가 난수인지를 판별하는가에 대한 13가지의 기준을 설명하고 있습니다. 모든 기준을 만족해야 random number라 할 수 있구요, 각종 통계학에서 사용되는 것으로 보이는 함수들을 수식에 다량 사용하고 있습니다. 개인적으로는 뒤로 갈수록 수식이 더 복잡해지는 것 같았습니다. NIST에서는 이 random 판별 방식의 소스또한 공개하고 있습니다.(아래 사이트를 클릭하시면 자료를 가져온 사이트로 가실 수 있습니다)..