일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정렬
- unorder_map
- 강참조
- moreeffectiveC++
- 선택정렬
- 델리게이트
- 데이터애셋
- enumasByue
- 크리티컬섹션
- 람다
- UELOG
- 정렬알고리즘
- C++최적화
- 프로그래머스
- 자료구조
- 약참조
- 언리얼엔진구조체
- 스마트포인터
- BFS
- UE4 커스텀로그
- map
- UML관련
- 알고리즘
- 언리얼가비지컬렉터
- 애셋로드
- UE_LOG
- C++
- stl
- dataasset
- 람다사용정렬
- Today
- Total
목록그래픽스(Graphics)/Game Math (12)
기억을 위한 기록들
- 3차원 공간 상의 물체가 놓인 방향을 표시하기 위해 스위스 수학자 오일러가 소개한 방법. 장점 - x,y,z 각각의 축을 기준으로 얼만큼 회전할 것인지만 알면된다. - 회전 변환 행렬은 최소한 9개(3x3 행렬)의 값을 필요로 하는 반면 오일러 각을 이용하면 단 3개의 값으로 충분하여 메모리 공간을 훨씬 적게 쓰는 장점이 있다. 회전 변환 행렬을 보고 어떤 축을 기준으로 얼마만큼 회전을 했는지 알기가 쉽지 않지만, 오일러 각은 바로 알 수 있으므로 가장 직관적인 방향 표현법이다. - 만약 좌표계에서 한 축만을 기준으로 회전하는 변환들을 조합하는 경우라면 단순히 그축에 해당하는 회전각들을 모두 더하면 된다. 이런 경우는 회전의 곱셈보다 훨씬 빠르다. 단점 - 대표적인건 *짐벌락 ( 어떤 한축에 대해 물..
벡터는 이미 배웠듯이 정적인 위치와는 아무런 상관이 없는 '크기'와 '방향' 성분만을 가진다. 게임에서 돌아다니는 주인공이나 적의 위치는 무엇으로 표현해야할까? 그것이 바로 '점'이다. 이 점이 존재하는 공간을 '아핀공간'이라고 한다. 흔히들 유클리드 공간은 벡터 공간이라고 하지만, 엄밀히 말하자면 유클리드 공간은 '아핀공간'이다. 아핀 공간의 정의 자체가 점들의 집합과 더불어 하나의 벡터 공간을 필요로한다. 1. 점(Point)과 벡터(Vector) V라는 벡터와 A라는 점들의 집합 아핀공간이 있을 때, 점과 벡터의 관계는 다음와 같다. 위가 의미하는 바는 A는 점을 의미하고 벡터 V에 의해 운반되어도, 운반 된 결과도 다시 점이 된다는 것이다. 다음 세가지 성질을 만족한다. 1. 점 P에 영벡터를 더..
각도의 표현 각도를 표현하는 방법에는 2가지가 있다. 1. 각도법/도수법(dgree) 원주를 360등분 한것으로 하나를 1도로 정한 우리가 흔히 아는 각도이다. 2. 호도법(radian) 호도법을 라디안이라고 하는데, 각도를 나타내는 표현방법이다. 각도에서 호의 길이로 각도를 나타낸다는 발상이다. 호도법은 호의 길이와 각도를 구하는데 있어서 편리하다. 호의 길이는 구하는 방법을 알아보기전에, 원주의 길이를 구하는 방법을 보면 2 x (원주율) x (반지름) 으로 된다. 원주율은 우리가 흔히 알고 있는 PI(π) 값으로 3.14159265...로 보통 3.14로 인식한다. 다시 짧게 정리하면 2π x 반지름 이렇게 되고 반지름이 1이라면 원주의 길이는 2π 가 된다. 반지름이 1인 원의 원주의 길이는 2π..
* 이 글은 개인노트와 같아서 계속해서 수정되고 있습니다. * 선형 변환은 일반적으로 하나의 벡터 공간을 다른 벡터 공간으로 변환하는 함수라고 할 수 있다. 선형 변환을 정의하는 두 특성이 변환 후에도 벡터 공간의 조건을 그대로 만족하기 때문이라는 것도 설명 하였다. 선형 변환 T가 벡터공간 V를 다른 벡터 공간 W로 변환한다고 하자. 그럼 수학적으로는 아래와 같이 표현 할 수 있다. T:V->W 이전에도 그랬던 어떤 벡터든 그 공간의 기저 벡터들의 선형 조합으로 표현할 수 있다. hyo-ue4study.tistory.com/222?category=878136 [3D 게임수학] 1. 선형대수(Linear Algerbra) * 이 글은 개인노트와 같아서 계속해서 수정되고 있습니다. * 이전부터 해야지해야지..
일반적인 방법으로는 위와 같이 구한다. 하지만, 분산을 O(1)로 구하는 방법이 있다. 같은 배열을 아래와 같이 계산하면 된다. (모든요소의 제곱값의 합 / 갯수) - 평균값의 제곱 으로 분산 값을 O(1)로 구해도 이전과 같은 결과가 나온다. 결과가 동일한 것을 알 수 있다. 참고: www.sciencebuddies.org/science-fair-projects/science-fair/variance-and-standard-deviation Variance and Standard Deviation It would be useful to have a measure of scatter that has the following properties: Both the variance and the standar..
* 이 글은 개인노트와 같아서 계속해서 수정되고 있습니다. * 이번은 벡터와 선현 변환을 행렬로 표현할 수 있는 행렬이다. 수학에서 선형대수학의 기본 정리(Fundamental theorem of linear algebra)라는 것이 있다. 이는 행렬과 선형 변환은 본질적으로 같다는 것을 증명한 내용을 담고 있다. [출처] 6. 행렬(Matrix)의 설계 방법|작성자 이득우 https://blog.naver.com/PostView.nhn?blogId=destiny9720&logNo=221401729370&categoryNo=22&parentCategoryNo=&from=thumbnailList 행렬의 종류 - 정방 행렬(square matrix) : 행과 열의 개수가 같음. - 영 행렬(zero matr..
* 이 글은 개인노트와 같아서 계속해서 수정되고 있습니다. * 아일랜드의 수학자 해밀턴이 1843년, 13년의 연구 끝에 쿼터니언을 발견, 그가 1846년에 발표한 논문에서 쿼터니언의 실수부를 '스칼라', 허수부를 '벡터'라고 말하면서 비로소 벡터라는 용어가 생겼다. 유클리드 공간(Euclidean Space) 유클리드라는 기원전 300년경에 살았던 그리스의 수학자이다. 20세기 초까지 그의 책 '원론'은 수학, 특히 기하학을 가르치는 교과서로 쓰였다. '원론'에서 나온 공리들 중 일부이다. - 임의의 점과 다른 한 점을 연결하는 직선은 단 하나뿐이다. - 임의의 선분은 양 끝으로 얼마든지 연장할 수 있다. - 임의의 점을 중심으로 하고 임의의 길이를 반지름으로 하는 원을 그릴 수 있다. 하지만, 우리는..
* 이 글은 개인노트와 같아서 계속해서 수정되고 있습니다. * 이전부터 해야지해야지라는 생각에 시작을 제대로 못하고 있었다. 사실 당장 급하게 필요한 기술이 아니라서 안하고 있었던것 같다. 그런데 장기적으로 봤을때 필수적으로 필요한 내용이다. 그래서 매일매일 쓰면 부담스러우니 매주 일요일마다 10개의 챕터를 주당 한개씩 써보려고한다. 이번은 첫 시작은 선형 대수이다. 1.1 선형 변환(Linear Transformation) 대수(Algerbra)란? - '대신하는 수' 즉, 미지수와 그 미지수를 사용하는 수학인 대수학을 뜻한다. (ex. x,y,z 같은) 선형(Linear)이란? - 선형성(linearity) 또는 선형(linear) 직선처럼 똑바른 도형 또는, 그와 비슷한 성질을 갖는 대상이 이라는 ..
https://www.youtube.com/watch?v=KqbqZ3IY1II https://pastebin.com/DqBgCUkx [C++] c++ to Blueprint 6DoF Fixing Gimbal Lock - Pastebin.com Not a member of Pastebin yet? Sign Up, it unlocks many cool features! public: // Convert Euler Rotations To Quaternions UFUNCTION(BlueprintCallable, meta = (DisplayName = "Euler To Quaternion", Keywords = "rotation, quaterion" pastebin.com
개념 - 임의의 축을 기준으로 회전 행렬(Matrix)를 구해주는 수학도구 장점 - 일반 회전 행렬에 비해 계산량이 적다. - 메모리를 적게 차지함. - 회전행렬의 짐벌락(Gimbal Lock) 현상을 해결해준다. https://hoodymong.tistory.com/3 짐벌락과 오일러 각 (gimbal lock, euler angles) -오일러 각이란? -짐벌락이란? -짐벌락은 왜 생기나? 1. Gimbal 이란? 출처 - [http://ko.wikipedia.org/wiki/%EC%A7%90%EB%B2%8C] 이것이 바로 짐벌이다. 위키에는 단일 축으로 물체가 회전하도록 중심축을 가진.. hoodymong.tistory.com 단점 - 직관적인 이해하기가 어렵다. 쿼터니온 데이터 구조 - x,y,z..
1. 개요 플레이어입장에서 적의 방향을 구해보자 2. 함수 사용(Get Unir Direction Vector) GetSafeNormal() ? 그게 뭣이여 Normal 을 구하는데 안전하게 구하기 위해 지어준 이름 같다 우선 SquareSum 에 두 액터의 위치를 뺀(To - From) 방향(A)의 제곱근의 합을 구한다. //주석 번역 하지면 " // 그 안에 허용오차를 추가하는 것이 안전한지 확실하지 않다. 오류가 너무 많을 수 있음" 오류가 있을 수 있다는 안내 코멘트 를 해둔 것 같다 제곱근의 합들의 역제곱근한 Scale을 구한뒤, A에 Scale을 곱해준 뒤 리턴해준다. 나온 벡터 A값을 RotationFromXVector (관련설명은 길어질것 같으니 나중에 다시 다루기로 하자 )를 이용하면 캐..
1. 개요 게임을 하다보면 캐릭터와 캐릭터 간의 거리를 구해야한다. 플레이어와 몬스터 플레이어와 아이템 등등 거리로 가능하고 불가능한 설정들을 해주기 전에 얼마나 적당한 거리에 있는지를 확인 해야 한다. 2. 함수 사용 쉽게 구할 수 있다. 함수 내부를 살펴보자 다른 액터와 플레이어 액터의 Location 뺀 다음 Size() 함수를 사용해 리턴 해준다. Size 함수를 보자. 플레이어와 적 캐릭터의 위치를 뺀값을 벡터의 크기(길이)를 구한다. (FMath 클래스 Sqrt()함수 -> 제곱근(https://ko.wikipedia.org/wiki/%EC%A0%9C%EA%B3%B1%EA%B7%BC)을 사용한다.) Get Distance To 함수내부와 같이 계산해보자 나온 xyz값을 Size() 함수대로 4..