@ 16. 1 ~ 17. 1/면접관련
-
직교, 원근투영@ 16. 1 ~ 17. 1/면접관련 2016. 12. 13. 19:33
투영전까지는 w성분에 영향을 주지 않는다.점이나 벡터들은 변환을 한 후에도 역시 점과 벡터가 된다. 또한 4x4행렬에서 마지막행은 항상 (0,0,0,1)의 값을 가진다. 원근 투영행렬은 이러한 두가지 성질을 가지지 않는다. 동차화 과정을 필요하게 된다. ( w가 1이 아니게 될 수 있다는 것)직교투영은 w자체에 영향을 주지 않는다.. 직교투영행렬P는 한점의x 성분과 y성분은 그대로 두고 z 성분만 0으로 만들어주는 단순한 직교투영행렬이다.(1 0 0 0) 0 1 0 0 0 0 0 0 0 0 0 1z = 0인 평면상에 수직으로 투영..그래서 z인 평면의 양쪽에 있는 물체들은 모두 이 직교 투영평면으로 투영된다..그래서 원근감이 없지요.. 원근투영http://egloos.zum.com/EireneHue/v/..
-
문자열 정리 (아스키, 멀티, 유니코드)@ 16. 1 ~ 17. 1/면접관련 2016. 12. 13. 17:06
싱글 바이트 케릭터 셋 : 아스키코드가 대표적 모든 문자는 1바이트로 표현 멀티 바이트 케릭터 셋 : 어떤 문자는 1바이트, 어떤 문자는 2바이트로 표현* 쉽게 이야기해서 멀티 플레이어 생각하면됨..이곳저곳 그냥 적절하게 사용 와이드 바이트 케릭터 셋 : 유니코드 방식이고 모두 2바이트로 처리한다.* 멀티보다 와이드가 더 넓은 개념과 표현이라는 생각을 잊지 말자 여기서 와이드 바이트 케릭터 셋 즉, 유니코드 문자열은char 대신에 wchar_t를 사용하는 문자임..그래서 typedef unsigned short wchar_t 라고 shot형이다* 멀티바이트 같은 경우에는 그냥 char자료형을 쓴다 똑같다 아스키랑...추가로 사용도 L"문자열" 붙여서 사용하지요..근데 특이하게도 널문자도 2바이트를 차지한..
-
기술 면접 책관련(배열, 문자열 / 재귀호출)@ 16. 1 ~ 17. 1/면접관련 2016. 12. 13. 16:56
문자열은 문자의 배열일 뿐이다(보통은 읽기 전용)배열 : 메모리 블록에 연속적으로 나열된 같은 유형의 변수 모음..인덱스 접근으로 검색이 O(1)이긴하지만..최악의 배열이면 배열도 검색이 O(n)이 된다.특히 문자 배열이 있을떄 W를 찾아내라 ? 이런건 O(n)임 배열 중간의 데이터 삭제나 추가는 느려진다는 단점이 있다. 이건 o(n) 이다대부분의 동적배열은 내부적으로 정적 배열을 사용하는데..동적 배열의 크기를 바꿀때는 보통 적당한 크기의 새로운 배열을 만들고 모든 원소를 복사하고 기존 배열의 메모리 할당을 해제해야하는 식이다.꽤 느린 연산이다. 포인터 상수 : char* const charPtr 이런식이다. 메모리상의 다른 위치를 가리키도록 변경시킬 수 없음..값을 변경가능..상수 포인터 : cons..
-
기술 면접관련 책 정리..(리스트 트리, 그래프)@ 16. 1 ~ 17. 1/면접관련 2016. 12. 13. 15:46
항상 시간복잡도 다음에는 공간복잡도를 생각해야한다. 리스트 관련 리스트에서 머리 원소에 대한 추적여기서 주의할것은 바로 bool insertInfront(IntElement **head, int data)이런 함수에서 head가 계속 갱신이 되야 한다면 이중포인터로 넘겨야 한다. 그래야지 안에서 된다! 주의하자!bool insertInfront(IntElement* head, int data)로는 안된다..지역변수만 바꾸기 때문에..Swap함수를 잘 생각해보자.(만약에 멤버변수로 있다면 상관이 없겠지...) 리스트 종주(순회)머리리스트가 아닌 다른 리스트 원소를 가지고 작업을 해야하는 경우도 있다. 연결 리스트의 첫 번째 원소가 아닌 원소에 대한 연산을 하려면일부를 종주(순회)해야한다.주의해야할것은 마지..
-
짐벌락, 쿼터니언, 오일러 회전 관련..@ 16. 1 ~ 17. 1/면접관련 2016. 12. 13. 13:45
짐벌락을 알기 전에 먼저 오일러각과 회전시스템을 알아야 한다. 오일러 각이란 우리가 흔히 쓰는 xyz, x축 기준의 회전각 y축 기준의 회전각 z축 기준의 회전각을 말한다. 오일러 각은 회전행렬로 오브젝트를 애니메이트 하려고 할때 발생이 된다. 각 축을 독립적으로 평가하기 때문이다. 세축이 종속적이기 때문에 짐벌 락이라고 표현이된다는...z축을 돌리는 순간 xy축은 함께 돌아가니까..세축이 종속적인 이유는..회전 자체를 이 세축으로 나눠서 계산하기 떄문이다.. 오일러 앵글이 설정한 순서에 각 축을 독립적으로 평가하기 때문이라..쿼터니언은 세개의 추기 동시에 업데이트 되기 때문에 짐벌락이 일어나지 않는다라.. 내프로젝트에서 짐벌락이 발생안된 이유는 한개축만 회전을 하기 때문이다. Y축 짐벌락 : 3차원 공..
-
용어정리@ 16. 1 ~ 17. 1/면접관련 2016. 12. 6. 21:13
인라인 : 함수의 몸체부분이 함수호출 문장을 완전히 대체했을때 인라화가되었다고 한다. C의 매크로함수와 같다. 함수의 매개변수로 선언된 참조자는 지역변수와 동일한 성격을 갖는다.즉, 함수의 반환이나 함수 호출이 종료되면 참조가 매개변수는 사라진다.반환형이 참조형인 경우, 반환 값을 무엇으로 저장하느냐에 따라서 그 결과에 차이가 있으므로 적절한 선택해야함.int& 테스트(int& test);일반변수일경우 = 테스트(num1);참조변수일경우 = 테스트(num1);두 가지 방식은 차이가 있다. 일반 변수면 num1과 일반변수는 별개다.그러나 참조형일때 num1과 참조변수는 같다또 반환값이 값일때는 절대로 참조형 변수로 얻을 수 없다. 왜냐면 반환 값은 상수나 다름없기 때문에.. 또한 함수내에서 선언된 지역변수..
-
C++ 11 기능정리@ 16. 1 ~ 17. 1/면접관련 2016. 12. 5. 13:20
1. RValue우측값이라고 하죠. 솔직히 말해 코딩에 편리함을 가져다 주지는 않는 녀석이고 이해하기도 쉽지 않지만, STL알고리즘을 비롯하여 임시객체를 생성하고 파괴하는 일이 잦은 코드에서는 큰 성능 향상을 불러올 수 있는 개념입니다. ?12345void Ex1(){ std::vector vec; vec.push_back(SomeClass(1, 2, "3"));}이런 코드가 있다고 치면, RValue 개념이 없던 시절에는 먼저 SomeClass 객체를 생성하고, 그 다음에 인자로 넘기기 위해서 복사생성자를 호출하겠죠. 그리고 push_back 함수 안으로 넘어가서 삽입될때 다시 한번 복사가 일어날 겁니다. 그리고 push_back 함수를 빠져나올때 인자가 파괴되고, push_back 함수를 빠져나온 다..