본문 바로가기

전체 글476

[DirectX 11] Phong Shading 본 내용은 강의를 토대로 작성하였습니다. honglab에서 강의를 구매하실 수 있습니다. Phong reflection model - 조명이 빛을 반사해서 우리 눈에 어떻게 보이는 지에 대한 모델 - 물체가 조명을 받았을 때 Ambient + Diffuse + Specular로 표현 Diffuse 어떤 표면의 normal vector →n과 조명을 향하는 벡터인 →l이 있을 경우 빛을 받는 강도는 두 벡터의 각도와 관련이 있다 각도가 작으면 작을수록 빛을 많이 받고 크면 클수록 적게 받음각도가 0일 때 가장 값이 크다 → cos를 사용한다 구현 예시 const vec3 dirToLight= glm::normalize(light.pos - hit.point); const float diff = glm::m.. 2023. 9. 25.
[백준 2444] 별 찍기 - 7 2444번: 별 찍기 - 7 (acmicpc.net) 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. 예제 입력 1 5 예제 출력 1 * *** ***** ******* ********* ******* ***** *** * 풀이 / 맞음 #include using namespace std; int main() { int n; cin >> n; int num = n * 2 - 1; //9 for (int i = 0; i < n; i++) //0 1 2 3 4 { f.. 2023. 9. 1.
[백준 2443] 별 찍기 -6 2443번: 별 찍기 - 6 (acmicpc.net) 2443번: 별 찍기 - 6 첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. www.acmicpc.net 문제 첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 예제 입력 1 5 예제 출력 1 ********* ******* ***** *** * 풀이 / 맞음 #include using namespace std; int main() { int n; .. 2023. 9. 1.
[백준 2440] 별 찍기 - 3 2440번: 별 찍기 - 3 (acmicpc.net) 2440번: 별 찍기 - 3 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 www.acmicpc.net 문제 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 예제 입력 1 5 예제 출력 1 ***** **** *** ** * 풀이 / 맞음 #include using namespace std; int main() { int n; cin >> n; for(int i=0;i 2023. 9. 1.
[DirectX] 3차원 구 그리기(구, 직선 충돌) 본 내용은 강의를 토대로 작성하였습니다. honglab에서 강의를 구매하실 수 있습니다. 원리 1. 모니터 픽셀을 시작으로 모니터와 수직인 방향으로 가상 공간을 향해 광선을 쏴준다. 2. 광선에 부딪힌 물체로부터 색을 가져온다. 여기서 z 방향은 const auto rayDir = vec3(0.0f, 0.0f, 1.0f); 색을 가져오기 위해서는 먼저 광선이 물체에 닿았는지 안 닿았는지 먼저 판단이 필요 const Hit hit = sphere->IntersectRayCollision(ray); // 광선이 물체에 닿으면 그 물체의 색 반환 vec3 traceRay(Ray &ray) { const Hit hit = sphere->IntersectRayCollision(ray); if (hit.d < 0... 2023. 8. 29.
교환(Swap) / 매개변수: 값 복사, 포인터, 참조 비교 int SwapValue(int a, int b) // 값 복사 { int temp = a; a = b; b = temp; return ? // 문제: 반환을 해 줄 수 없음 } void SwapPtr(int* a, int* b) //포인터 { int temp = *a; *a = *b; *b = temp; } void SwapRef(int& a, int& b) //참조 { int temp = a; a = b; b = temp; } int main() { int a = 2; int b = 3; cout 2023. 8. 28.