개인공부(212)
-
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 -
7-1 내적을 활용한 목표물 감지
코드 플레이어의 시야벡터와 playerToTarget을 각각 단위벡터로 만들고 둘을 내적한 결과값이 시야 범위 안에 있는지 계산하고 플레이어 탐지 범위안에 있으면 목표물을 감지한다. 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 // 플레이어 이동 Vector2 inputVector = Vector2(input.GetAxis(InputAxis::XAxis), input.GetAxis(InputAxis::YAxis)).GetNormalize(); Vector2 deltaPosition = inputVector * mov..
2023.06.07