개인공부(214)
-
11664번: 선분과 점 / C++
11664번: 선분과 점 (acmicpc.net) 11664번: 선분과 점 첫째 줄에 선분과 점의 좌표 Ax, Ay, Az, Bx, By, Bz, Cx, Cy, Cz가 주어진다. 좌표는 0보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 물리엔진을 구현하기 전에 필요한 알고리즘들을 학습하자! 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 #include #in..
2023.06.18 -
17386번 : 선분 교차 1 /C++
17386번: 선분 교차 1 (acmicpc.net) 17386번: 선분 교차 1 첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다. 세 점이 일직선 위에 있는 경우는 없다. www.acmicpc.net 세 점이 일직선 상에 없으므로 판단할때 음수만 판단한다, long long 곱은 역시나 플로우가 발생하므로 조심하자 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 32 33 34 #include using namespace std; typedef long long ll; ll CCW(ll x1, ll y1, ll x2, ll y..
2023.06.18 -
11758번 : CCW / C++
11758번: CCW (acmicpc.net) 11758번: CCW 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다. www.acmicpc.net CCW알고리즘은 외적을 사용해서 넓이 값의 부호를 판단해서 두 직선의 방향을 판단하는 알고리즘이다. 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 32 33 34 35 36 37 38 39 40 41 #include using namespace st..
2023.06.18 -
백준 16135번 : OBB(Oriented bounding box) / C++
16135번: OBB(Oriented bounding box) (acmicpc.net) 16135번: OBB(Oriented bounding box) 안녕! 요즘 2차원 슈팅 게임을 만들고 있는데, 좀 어려운 부분이 생겼어. 플레이어가 적이 쏘는 총알에 맞으면 데미지를 입는 것을 구현하고 싶은데, 혹시 네가 도와줄 수 있니? 히트박스(실제 www.acmicpc.net 정말 오랜만에 백준문제를 해결했다 OBB 충돌문제로 개념에대해서 이해하면 쉽게 해결? 가능하다 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ..
2023.06.15 -
충돌감지
1. AABB 1 2 3 4 5 6 7 8 9 10 11 12 13 // AABB 충돌 else { Vector2 leftMin = leftPosition - leftScale * 0.5f; Vector2 leftMax = leftPosition + leftScale * 0.5f; Vector2 rightMin = rightPosition - rightScale * 0.5f; Vector2 rightMax = rightPosition + rightScale * 0.5f; if (leftMin.x = rightMin.x && leftMin.y = rightMin.y) return true; } return false; Colored by Color Scripter cs 2. OBB 1 2 3 4 5 6 7..
2023.06.14 -
7-3 내적을 활용한 벡터의 투영
1 2 3 4 5 6 // 투영된 위치와 거리 계산 Vector2 projectedV = (lineEnd - lineStart).GetNormalize(); Vector2 projectingV = point - lineStart; Vector2 projectV = projectedV * (projectedV.Dot(projectingV)); Vector2 projectedPoint = lineStart + projectV; float distance = (projectedPoint - point).Size(); cs 위의 식 결과로 투영할 벡터의 크기가 1이면 단순하게 정리가 되므로 Nomalize값을 받는다.
2023.06.07