본문 바로가기

전체 글

(231)
더블 버퍼링 그래픽 객체에 이미지를 그릴 때 사용하는 기법이다. 더블 버퍼링이란 싱글 버퍼링으로 화면을 그릴 경우 데이터를 저장하는 동안에는 다음 그림의 데이터를 전송할 수 없기 때문에 지우고 그리고 지우고를 반복 할 경우 필연적으로 발생하는 깜빡임 등의 상황을 막기 위해서 사용되는 기법입니다. API를 시작하다보면 비트맵 이미지를 사용하게 된다. 그 때 이미지들이 전환되면서 영상처럼 부드럽게 움직일 거라 생각하지만 실제로 이미지들이 움직일 때마다 화면이 깜빡이는 현상이 눈에 들어온다. 쉽게 말하자면 아래와 같은 상황인 것이다. ▶ 게임 캐릭터이미지를 구현할 때 이미지를 움직이게 하고 싶다. 그러나 캐릭터가 띄엄띄엄 움직임과 동시에 깜빡거리는 화면 때문에 게임할 맛이 안난다. 그 이유는 컴퓨터가 이미지를 지웠다가 새..
인터페이스 인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다. c++에서는 순수 가상 함수를 이용하여 정의할 수 있습니다. 인터페이스는 멤버 필드나 구체적으로 구현한 함수를 갖지 않고 특정 기능을 약속한 함수만 가지게 됩니다. 그리고 모든 멤버는 사용하는 개발자와의 약속으로 전부 public 으로 접근 지정합니다. c++ 에서는 구조체가 디폴트 제한자가 public 이기 때문에 구조체를 이용하여 인터페이스를 정의하는 경우도 있습니다. 개발자들의 약속으로 인터페이스의 이름은 I로 시작합니다. 당연히 객체 생성이 불가능하며 인터페이스를 상속받은 파생 클래스도 인터페이스의 순수 가상함수를 재정의 해야만 객체를 생성할 수 있습니다. 추상 클래스와 인터페이스의 차이점 1. 인터페이스는 상태나 구현을 포함할 ..
추상클래스 하나 이상의 순수 가상 함수를 포함하는 클래스를 추상 클래스라고 한다. 이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가진 함수의 집합을 정의할 수 있게 해줍니다. 즉, 반드시 사용되어야하는 멤버 함수를 추상 클래스에 순수 가상 함수로 선언해 놓으면, 이 클래스로부터 파생된 모든 클래스는 이 가상함수를 반드시 재정의해야 합니다. 추상 클래스는 정의 되어있지 않은 순수 가상 함수를 포함하므로, 객체를 만들 수 없습니다.(인스턴스 불가) 즉, 파생 클래스에서 순수 가상 함수를 모두 오버라이딩하고 나서야 비로소 파생 클래스의 객체를 생성할 수 있습니다. 하지만 추상 클래스의 포인터와 참조는 바로 사용할 수 있습니다. 이를 이용하여 업캐스팅형식의 객체를 선언할 수도 있습니다. 추상 클래스..
단위 벡터 단위 벡터 크기가 1인 벡터를 의미합니다. 표준단위벡터 직교좌표계에서 양의 좌표축 방향의 단위벡터들을 표준단위벡터 라고 한다. 2차원실수평면에서 해당 벡터들을 i = (1,0) , j = (0,1) 이라고 표현한다. 벡터의 정규화 어떠한 벡터 a 와 같은 방향을 가지는 단위 벡터 u 를 생성하는 것을 벡터의 정규화라고 한다. 즉 벡터 a 의 길이를 A라고 한다면 A 의 역수를 즉 1/A 를 곱해주면 된다. 당연히 이때 1/A 는 스칼라의 양수 값이다. ( ||1/A|| = 1/A의 길이를 뜻한다. 벡터의 좌표를 뜻하는 것은 아니다.) a = (-3,4) 이라는 벡터가 있으면 해당 벡터의 단위벡터 v = (-3/5, 4/5) 이다 이 v 벡터의 길이는 1 이다. 다음은 표준단위벡터를 이용한 벡터 표현법이다..
벡터와 스칼라의 곱셈 벡터와 스칼라의 곱 연산 시 스칼라의 값을 벡터의 각 성분에 곱해준다. 스칼라 양수의 곱은 벡터의 값을 축소, 확대만 시킬 뿐 방향에 영향을 끼치지는 않는다는 것입니다. 다만, 이때 스칼라 양수의 값이 1이라면 벡터의 크기와 방향 둘 다 변하지 않는다. 그럼 스칼라 음수의 곱은 어떨까? 스칼라 음수를 벡터에 곱하면 방향과 크기가 둘 다 변한다. 물론 스칼라 음수 값이 -1 이라면 방향만 바뀌며 크기는 변하지 않는다. 좌표계로 표현하면 다음과 같다. 출처 : https://ko.khanacademy.org/math/linear-algebra/vectors-and-spaces/vectors/v/multiplying-vector-by-scalar 벡터와 스칼라의 곱셈 (동영상) | 벡터 | Khan Acade..
벡터의 덧셈 벡터의 덧셈이 해당 벡터의 시작점을 알려주는 것은 아니다. 그저 덧셈의 결과 값이 벡터의 크기와 방향만을 알려준다. 중요한 것은 같은 벡터는 크기와 방향이 같다는 것이고, 좌표계에서 어느 곳에서든 표현할 수 있다는 것이다. 다만, 편의를 위해 원점에서 표현하면 다음과 같다. 여기서 중요하게 봐야할 것은 a + b의 벡터의 크기는 a + b 의 크기이며, 방향의 꼬리 부분은 a벡터의 시작점이고 끝단은 a 벡터의 화살표 끝단에서 다시 b 벡터 만큼의 이동한 방향이라는 것이다. 물론 해당 a+b 벡터는 어느 지점에서 시작하는지 중요하지 않다는 것이다. 다만, 좌표계에서 a + b 벡터를 위 좌표계와 같이 표현할 수 있다. 출처 : https://ko.khanacademy.org/math/linear-algeb..
벡터의 기본 개념. 벡터 유클리드 공간에서 방향과 크기를 포함하는 기하학적인 대상. 보통 화살표로 표시한다. 어떤 물체가 시속 5m 로 나아간다. 이 물체의 속력은 5m/s 인데 이때 속력은 벡터가 아니다. 이것으 스칼라이다. 벡터를 알려면 해당 물체가 어느 방향으로 나아가지까지 알고 있어야한다. ex) 어떤 물체가 시속 5m으로 동쪽이로 나아가고 있다.
역행렬과 행렬 곱셈의 성질 역행렬 행렬의 곱셉에 대한 역원을 의미한다. 임의의 정사각행렬 A 곱셈에 대한 역원 A-1을 역행렬이라고 한다. 한 행렬에 대하여 역행렬은 하나 뿐이다. A * A-1 = I 즉, 행렬과 해당 행렬의 역행렬의 곱은 단위행렬이 된다. A 가 2X2 정사각행렬일 때 기준 A-1 역행렬은 = 1/ad-bc * d -b -c a 이다. 따라서 ad-bc 가 0 이면 분모가 0이므로 역행렬이 존재하지 않는다. 행렬 곱셈의 성질 중요한 점은 곱셈의 교환법칙이 성립하지 않는다는 것이다! 출처 : https://ko.khanacademy.org/math/precalculus/x9e81a4f98389efdf:matrices/x9e81a4f98389efdf:properties-of-matrix-addition-and-sc..