본문 바로가기
대학생활/수업

게임그래픽프로그래밍 9주차 - 기존 내용 복습 및 중간고사 가채점

by se.jeon 2023. 5. 8.
728x90
반응형

기존 내용 복습

삼각함수

정의와 용어

- Degree 의 정의

- Radian 의 정의

- 원주율의 정의

- 각도를 표현하는 방법

- 피타고라스의 정리

 

삼각비

- 삼각비의 정의

- 사인(sine)의 정의 : 높이/빗변

- 코사인(cosine)의 정의 : 밑변/빗변

- 탄젠트(Tan)의 정의 : 높이/밑변

 

삼각함수

- 사인함수

- 코사인함수

- 탄젠트함수

- 삼각함수의 비교

- 삼각함수의 성질

 

삼각함수의 역함수

- arcsin

- arccos

- arctan

 

삼각함수의 역함수의 확장

- atan2

 

단위원과 피타고라스의 정리

일반원과 피타고라스의 정리

좌표계의 기원과 정의

- 좌표계의 정의

- 좌표계의 종류 : 직교좌표계, 극좌표계, 구면좌표계, 원통좌표계

- 데카르트 좌표계

- 게임에서의 3차원 좌표계

- 극좌표계

방정식의 이해

- 일차 방정식의 이해

- 이차 방정식의 이해

- 일차 방정식과 직선

- 일차 방정식과 게임 프로그래밍

- 이차 방정식과 포물선

- 이차 방정식과 원

- 이차 방정식과 게임 프로그래밍

벡터

정의와 용어

- 벡터의 정의

- 스칼라의 정의

- 벡터와 N차원

- 벡터의 크기

- 벡터의 연산 (덧셈, 뺄셈, 스칼라 곱셈, 스칼라 나눗셈)

 

벡터의 종류

- 위치벡터

- 단위벡터

- 방향벡터

- 법선벡터

- 영벡터

- 역벡터

 

벡터공간

- 벡터공간의 정의

- 벡터의 기저

- 벡터공간의 10가지 공리

- 벡터의 생성과 선형결합

- 벡터의 선형독립과 선형종속

- ★ 기저와 기저벡터

- 차원

- 표준기저, 표준기저벡터

 

벡터의 내적

- 벡터의 내적의 정의

- 벡터의 내적의 특징

- 벡터의 내적의 활용

 

벡터의 외적

- 벡터의 외적의 정의

- 벡터의 외적의 특징

- 벡터의 외적의 활용

행렬

행렬의 정의와 용어

- 행렬의 정의

- 행렬의 행

- 행렬의 열

- 행벡터

- 열벡터

- 행렬의 크기

- 행렬의 성분의 표기

 

행렬의 연산

- 행렬의 상동

- 행렬의 덧셈

- 행렬의 뺄셈

- 행렬의 스칼라배

- 행렬의 곱셈

 

행렬의 종류

- 정방행렬

- 전치행렬

- 전치행렬의 성질

- 단위행렬

- 대각행렬

- 영행렬

- 역행렬

- 역행렬의 성질

- 역행렬과 행렬식

- 행렬식을 이용한 역행렬

선형변환의 이해

- 선형변환의 정의와 용어

- 벡터에서의 선형성

- 2차원 벡터의 선형성 만족 여부

- 2차원 벡터의 가산성 만족 여부

- 2차원 벡터의 동차성 만족 여부

행렬의 관계

- 행렬의 구조와 벡터

- 행렬과 기저벡터의 관계

- 정방행렬을 통한 벡터 표현

- 벡터공간과 행렬의 관계

- 크기 변환 행렬

- 회전 변환 행렬

- 전단 변환 행렬

- 역행렬의 기하학적 의미

- 행렬식의 기하학적 의미

- 평행사변형의 넓이

- 크기 변환 역행렬

- 회전 변환 역행렬

- 전단 변환 역행렬

아핀 공간의 이해

- 벡터공간의 한계

- 벡터공간에서의 벡터

- 아핀공간의 개념

- 아핀공간의 정의

- 아핀공간의 점

- 아핀공간의 벡터

- 아핀공간의 성질

- 아핀공간과 벡터공간의 차이

아핀 결합의 이해

- 아핀 결합

- 스칼라 계수들의 합이 1이라는 제약 조건

- 아핀 공간의 두 점을 이용한 아핀 결합

- 아핀 결합을 통한 직선, 반직선, 선분

아핀 변환의 개념

- 아핀 변환의 정의

- 동차좌표계

- 아핀변환과 동차좌표계의 활용

- 이동변환과 동차좌표계의 이해

- 정방행렬을 통한 2차원 아핀 변환 표현

- 2차원 이동 변환을 표현한 아핀 변환 정방행렬 표현

- 2차원 크기 변환을 표현한 아핀 변환 정방행렬 표현

- 2차원 회전 변환을 표현한 아핀 변환 정방행렬 표현

변환의 확장

- 변환은 행렬의 곱을 기반으로, 행렬의 곱셈 순서에 따라 결과가 다름

- 동차좌표계를 이용한 2차원 점에 대한 변환

 

파이썬의 자료구조

파이썬의 자료형

- Tuple (튜플) : 순서가 있음. 데이터의 중복을 허용. 데이터 변경 불가능

- List (리스트) : 순서가 있음. 데이터의 중복을 허용. 데이터 변경 가능

- Dictionary (딕셔너리) : 키(key)와 값(value)으로 결합된 자료형이며 순서가 없음

- Set (집합) : 순서가 없음. 데이터의 중복을 허용하지 않음.

 

리스트

- 생성시 대괄호 []와 list 함수 사용.

- 리스트의 색인 값으로 값을 얻기 (색인은 0부터 시작, -1은 마지막 값)

- 리스트 나누기

- 리스트 덧셈, 곱셈

- 리스트의 길이 구하기

- 리스트의 값 변경, 삭제

- 리스트 값 추가 및 특정 값 삭제 - append, remove

- 리스트 색인 값 얻기 - index

- 리스트 값 삽입 : 특정 위치의 값을 삽입 - insert

- 리스트 값 삭제 : 특정 위치의 값 삭제 - pop

 

패킹과 언패킹

- Packing : 여러 개의 값을 하나의 튜플로 묶는 것.

- Unpacking : 튜플의 각 원소를 여러 개의 변수로 할당. *변수 개수와 튜플의 원소 개수가 동일 필수)

 

Dictionary (사전, 딕셔너리)
- 데이터의 변경이 가능

- 키와 값이 쌍으로 구성되어 있기 때문에 키를 기반으로 검색 가능

- 값에는 set, tuple, list, dictionary등 다양한 데이터 구조 가능

- Dictionary를 생성 시 중괄호 {}와, 콜론 이용 혹은 dict 함수 사용

- 빈 Dictionary를 생성 시에 {}만을 이용해서 생성 가능

 

- 키와 값 추가

- 키와 값 삭제 - del, pop

- 특정 키의 값 변경

- dictionary 키들을 리스트로 얻기 - keys()

- dictionary 모두 삭제 - clear

- 특정 키로 값 얻기 - get, 없는 키로 값을 얻을 때에는 None을 리턴.

 

Set

- 데이터의 변경이 가능

- 합집합, 교집합, 차집합 등 수학적으로 집합의 성질을 지님 - union |, intersection &, difference -

- 데이터의 순서가 없기 때문에 인덱스를 통해서 데이터에 접근이 불가능하다.

- 집합을 생성 시에는 중괄호 {}나 set 함수를 사용한다.

 

- 데이터 추가하기 - add (하나), update (여러 개)

- 데이터 삭제하기 - remove

 

데이터 간의 이동

- List와 Tuple

- Set과 Tuple : Set 변환 시 중복된 원소는 하나만 남김.

- Set과 List : Set 변환 시 중복된 원소는 하나만 남김

 

파이썬 List 실습

- 숫자들을 원소로 가지고 있는 List를 이용하여 모든 숫자의 합계를 구하는 함수를 작성해 보세요

def sumList(data):
    sum = 0

    for i in range (0, len(data), 1):
        sum += data[i]
    return sum


num_list = [1, 11, 21, 31, 41, 51]
print(sumList(num_list))

파이썬 List 예제

def world_to_screen_coordinates(world_coordinates, screen_width, screen_height):
    screen_coordinates = []

    for coord in world_coordinates:
        x, y = coord
        screen_x = screen_width / 2 +x
        screen_y = screen_height/ 2 - y
        screen_coordinates.append((screen_x, screen_y))
    return screen_coordinates

screen_width = 800
screen_height = 600

world_coordinates = [
    (-100, 100),
    (-50, 50),
    (0, 0),
    (50, 50),
    (100, 100),
    (-100, -100),
    (-50, -50),
    (0, -50),
    (50, -50),
    (100, -100)
]
screen_coordinates = world_to_screen_coordinates(
    world_coordinates,
    screen_width, screen_height
)

print(screen_coordinates)
728x90
반응형