[C#] const, readonly 차이
용도 차이 : 초기화 시점을 바꾸고 싶을 때 필요한 걸 사용 const : 상수. 생성 시 바로 초기화해야한다. 이후에 변경 불가 readonly : 상수처럼 사용. 생성자에서 초기화 가능하다. 생성자 외의 함수에서는 변경 불가
2020.10.08
[Unity] 회전 정리
Vector3.Lerp(from 벡터 , to 벡터 , 시간 t)transform.position = Vector3.Lerp(start.position, end.position, Time.time); 보통 이런식으로 많이 사용. start지점에서 end지점으로 이동한다. Quaternion : 회전을 위한 함수 라고 간단하게 생각하자. Quaternion.identity : 초기화 시 사용. Quaternion.LookRotation(벡터값) : 쉽게 얘기해서 target을 기준으로 회전한다. similar to the LookAt() method, the object is always watching objects. public class LookAtScript : MonoBehaviour { publ..
2019.01.07
[퍼온 자료] Lua와 C 바인딩
스택 이해하기C와 lua간 연동에 중요한 요소는 가상 스택이다.lua의 스택 액세스 방법은 절대/상대 접근이 있다. 양수 값 - 절대 접근음수 값 - 상대 접근 절대 접근 방법은 스택 base에서 시작해 양수 1,2,3으로 순서를 부여하는 방법이다.상대 접근 방법은 스택 top에서 시작해 음수 -1,-2,-3으로 순서를 부여하는 방법이다. *스택의 마지막 값을 접근 시 -1, 바닥부터 접근 시 1 lua_checkstack : 스택 사이즈를 확인하기 위한 lua C API LUA_MINSTACK 20 으로 정의 허용 가능한 스택 인덱스 범위는1(index
2018.10.25
QueryPerformanceFrequency / QueryPerformanceCounter 사용 방법
//#include #include ( 초 단위 )//clock_t before;//doubleresult; //before = clock();// 어떤 프로세스가 시작한지 얼마나 지났는지 알려주는 것 //for(int i=0; iSetting(ALT+F7) 메뉴의 LINK 텝에서 Object/library modules: 에 추가를 해주어야 합니다..*/ /*DWORDdwStartTime = timeGetTime(); for(int i=0; i 자기 시스템이 최대 어느 정도까지의 timer resolution을 지원하는지를 판별하는데 사용됩니다. // QueryPerformanceCounter()=> 현재의 카운터를 알아내는 데에 사용됩니다.// >>>예를 들어,//앞의 함수를 콜한 후, 넘겨준 파라미..
2018.08.14
[NGUI/펌] 해상도에 따른 이미지 사이즈 맞추기
NGUI 새로운 버젼.. 해상도가 안맞아서 해상도에 맞게 늘릴려고 만든. 코드. UIRoot 에서 기준을 1280 X 720 할때. Inspector Window 에서 설정.Scaling Style - Constrained On MobilesContent Width - 1280 Fit Check Content Height - 720 Fit Check UIRoot 스크립트 에서 변경. void Update () 에서. mTrans.localScale = new Vector3(size, size, size); < - 이코드를 float x_value = (screen.x / 1280f);float temp_value = (720f * x_value);float y_value = screen.y / temp_..
2018.07.13
C++ for_each 함수
C++ / for_each 함수 제공하는 반복자 사이의 모든 요소를 각각 방문하여 작업을 처리하는 함수.즉, for_each 함수의 3번째 인자로 전달받은 함수나, 객체의 오버로딩 된 ( )연산자(연산자오버로딩)에 컨테이너 요소 값을 전달하는 것을 의미 ex) ⓛ class CMyClass{public: // (당연히) 퍼블릭으로 해주어야합니다.void operator( ) ( CTestClass& test ){delete test;test = NULL;}} vector vec; // 사이 코드는 초기화 및 값이 들어가있다고 가정합니다.... for_each( vec.begin( ), vec.end( ), CMyClass( ) ); /// vec 변수에 들어가있는 begin부터 end 앞까지의 CTest..
2018.03.21
no image
솔루션 외부 파일 만들어서 프로젝트에서 사용하기
대충 이런 느낌,,,, 볼더체는 프로젝트 프로젝트 외부에 공용으로 사용되는 헤더파일을 만들고 싶을 때 폴더 만들어서 사용하고싶으면... 1. 솔루션, 폴더(.sln 있는곳)에 같은 이름의 폴더 생성 (대강 이런 느낌으로) 2. 폴더 내부에 txt 확장자로 원하는 헤더파일 이름으로 생성 3. txt 확장자를 h 로 변경 >경고뜨는데 그냥 무시하고 확인(헤더파일이생성됨) 4. 폴더에서 비주얼 솔루션 아래에 있는 폴더로 만든 헤더 파일을 드래그 5. 만든 헤더 파일을 #include 해서 추가해서 사용 cf. 헤더파일 내부에서 d3d vector를 쓸거면 stdafx.h 에 있는 #include 아래에 추가해야함. cf. 다이렉트 쓰는 프로젝트 만들면 가장 먼저 해야할 일이 1) d3d 라이브러리 추가(inc..
2018.03.19
wsprintf 정리
원형 int wsprintf(LPTSTR lpOut, LPCSTR lpFmt, ... ); 인수 1. lpOut : 완성된 서식이 해당 변수에 담긴다. 최대 길이 1024 바이트. 2. lpFmt : 서식 문자열, 일반 문자열 사이에 %로 시작되는 서식 포함 가능 3. ... : 서식 문자열 내의 서식과 대응되는 변수. 서식의 개수만큼 변수를 제공해야함. ▶ lpFmt, ... 부분은 printf 함수와 동일하며, 해당 완성된 문자열이 lpOut 변수에 담기게 된다 리턴 성공할 경우, 버퍼로 복사된 문자 개수를 리턴해준다. 널 종료 문자는 개수에서 제외됨. 실패할 경우, 예상된 출력보다 더 작은 문자수가 리턴됨. 이 경우 GetLastError 함수로 실패 원인 파악 가능. 예제 ) TCHAR test[..
2018.02.28
[펌] vector 카파시티 정책
std::vector의 size와 capacity에 대해서 제대로 알고있자 std::vector를 제대로 알고, 제대로 쓰고 있는가를 파악할 때 내가 자주 하는 질문은 reserve와 resize에 대해 설명해 보세요. 의외로 많은 프로그래머가 제대로 대답하지 못한다. 저 질문을 대답하기 위해서는 size와 capacity에 대해서 잘 알고 있어야 하는데.. 사실, std::vector을 사용하기에 앞서 어떻게 구현이 되어있을까? 라고 고민을 해보면 추측할 수 있는 문제가 아닌가 하는 안타까움이 들때가 많다. 이제 막 입문하는 사람은 그렇다 치고, 어느정도 사용하다보면, 당연히 가지게 되는 의문과 고민, 추측이 아닌가? 그것은 나만 기대하는 욕심인 것인가? 위 그림을 보면 대부분은 이해할 것이라고 생각한..
2018.02.26
[펌] D3DXVec3TransformNormal 과 D3DXVec3TransformCoord 차이
D3DXVec3TransformNormal 과 D3DXVec3TransformCoord 의 차이에 대해서 간단히 말씀드리도록 하겠습니다. 단순하게 말하자면 D3DXVec3TransformNormal 은 벡터를 변환하는 것이고 D3DXVec3TransformCoord 는 위치를 변환하는 것입니다. 벡터와 행렬을 곱하기 위해서는 행과 열이 같은 차수여야 한다는 것을 알고 계실 것입니다. 예를 들어서 [x, y, z] 라는 3차원 벡터가 존재하는데 D3D 에서는 4x4 행렬을 곱하게 됩니다. 이러한 벡터를 행렬과 연산을 할 때는 차수를 맞춰줘야지 곱할 수 있게 됩니다. 즉 3차 벡터를 마치 1x4 행렬 혹은 4x1 행렬인 것처럼 만들어 주어야 4x4 행렬과 곱하는 것이 가능하다는 것이죠. D3DXVec3Tra..
2018.02.23
[C++] 중첩 클래스 사용 이유
중첩 클래스는 class 내부에 class를 선언하는 것이다 보통, 외부 class에 내부 class를 선언하는 경우에 / 내부 class를 private 으로 정의한다. 왜냐하면, 특정 클래스 안에서만 사용하는, 또다른 클래스 자료형이 필요할 경우에 이러한 방식을 사용하기 때문이다. https://m.blog.naver.com/PostView.nhn?blogId=kks227&logNo=220179773371&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
2018.01.10
no image
문자열 코딩 - [아스키코드, 멀티바이트, 유니코드]
VS 프로젝트 속성 -> 구성속성을 보면문자 집합으로 2가지를 사용할 수 있다.1. 멀티바이트 문자 집합2. 유니코드 문자 집합 아스키 코드(SBCS) - 모든 문자 하나가 1byte를 차지하며 영어를 표현한다. 하지만 아스키 문자 코드 만으로는 한글이나 일어 등의 다른 문자를 표시할 수 없다. 멀티바이트(MBCS) - 1. 아스키 문자 코드에다가 다른문자(2byte)들을 포함한 문자 집합이다.어떤 문자는 1byte고, 어떤 문자는 2byte이다.정확히는 모르겠지만, 한 문자가 2byte를 넘는 문자도 존재할 것이다. 2. 멀티바이트 문자 집합은 특정 문자 집합마다의 코드페이지가 존재한다.예를 들어, 같은 코드 번호 일지라도 한글 코드 페이지로 해석하면 한글이 나오지만,일어 코드 페이지로 해석하면 일어가..
2018.01.10
[퍼옴] pair, vector
가장 기본적인 STL 컨테이너라고 할 수 있는 pair와 vector에 대해서 먼저 알아보도록 하겠습니다. 이해하기 쉽도록 제 나름대로 정한 정의와 문제를 풀 때의 쓰임새를 알아보고 난 후, 멤버 함수들과 예제를 통해 사용법을 익혀보도록 하겠습니다. 1. pair 1) 정의1 이름이 'first', 'second'인 두 개의 변수를 저장할 수 있는 struct 2) 용도2 ① 이차원 배열의 인덱스 ② 이차원 좌표평면에서의 좌표 ③ 정점 번호와 해당 정점 번호까지의 최단거리를 묶어서 저장해야 되는 경우 3) 사용법 pair를 사용하기 위해서는 를 include 해야 합니다. pair는 다른 컨테이너들에 비해 간단한 구조이기 때문에 멤버 함수가 적습니다. 따라서, 바로 예제를 통해 pair의 기본적인 사용법..
2018.01.09
해쉬테이블( hash table) 간략 정리
검색속도가 매우 빠르나, 메모리를 굉장히 소모한다. 1. 해쉬 : 자료를 입력할 때부터 검색하기 쉬운 위치에 삽입하는 방법 ( 검색 방법이 아니라, 자료가 저장되는 전체 저장소이다. ) 2. 해쉬 테이블 : 자료가 저장되는 전체 저장소 ( 구현에 따라 배열/동적배열/연결리스트 ) 3. 해쉬 함수 : 데이터가 새로 입력될 때, 이 데이터를 어떤 위치(ex. index)에 넣을지 결정하는 연산을 해주는 함수 4. 해싱의 궁극적인 문제점 : 위치가 겹치는 충돌이 발생할 수 있다. ex) 해쉬 테이블이 배열이라고 할 때, key 값이 정수 int형이고, 해쉬 함수 내부 처리가 key % 10 (나머지연산) 이라고 하면 배열의 크기가 10 일때, key 값 중 1, 11, 21, 31 은 모두..
2018.01.04
[C++] variadic template
variadic template 은... 템플릿의 인자를 가변적으로 받을 수 있도록 구현하는 방식이다 참고)variable argument (다양한 인수의 표현) 이것의 심볼로는 ... 을 사용합니다. variadic template을 함수 템플릿 / 클래스 템플릿 2가지로 나누어서 간략히 설명합니다. 12345678910111213 template // template parameter packvoid Function( const Arg1& arg1, const Args&... args ) // function parameter pack{ Test( arg1 ); Function( args... );} void main(){ Function( 1, "ezreal very handsome", 1.5f )..
2017.12.28