42cursus
[miniRT] 서브젝트 요구사항 정리[deprecated]
todoni
2022. 7. 30. 11:41
허용함수
- open, read, write, malloc, free, perror, strerror, exit
- math 라이브러리 함수 전부
- minilibX 함수 전부
제약사항
- minilibX를 반드시 사용하세요
- window 창 관리는 쾌적하게 될 수 있어야 합니다 (다른 윈도우창으로 이동, 창 최소화 등등)
-
최소한 5개의 간단한 기하 형상을 구현해야 합니다(평면, 구, 원통, 사각, 삼각형(아마 기둥?))3개만 하면됨 평면, 구, 원통 - 모든 가능한 교차점과 물체 내부는 올바르게 처리되어야 합니다(if 해당 되는 경우에는) - 뭔말?
- 물체의 특수한 값을 재설정 할 수 있어야 합니다 (구의 직경, 사각 면 크기, 원통의 너비와 높이 등)
- 물체는 회전변환 이동변환 가능해야함 빛이랑 카메라도(구와 빛은 회전될 수 없습니다. <- 이것도 뭔소리? ㅋㅋ)
- 빛: 스포트라이트, 하드섀도우(이건 또 뭐람), 주변광(물체는 절대 완전히 빛이 없는 공간에 있을 수 없습니다)
색이 있는 광선 또는 멀티스퐅라잇도 적절히 처리되어야 합니다엠비언트와 디퓨즈 라이팅은 반드시 구현해야합니다 언젠가 Deepthought이 프로젝트를 평가하기 위해 눈이 생기고 당신이 멋찐 데스크탑 바탕화면을 렌더링 하고싶을 수도 있으니까 .. --save가 두번째 인자로 들어오는 경우 렌더링된 이미지를 .bmp 포맷으로 저장하세요.두번째 인자가 없는 경우,프로그램은 다음의 규칙을 따라 이미지를 윈도우에 표시해야 합니다- ESC버튼을 누르면 반드시 창을 닫고 프로그램을 깨끗이 종료합니다.
- 윈도우창의 빨간 x버튼을 누르면 창을 닫고 프로그램을 깨끗이 종료합니다.
디스플레이 해상도보다 표시할 이미지의 정의된 사이즈가 더 큰경우, 윈도우창 사이즈는 현재 디스플레이 해상도에 따라 설정합니다.만약 카메라가 한대 이상 있다면 당신이 정한 키보드 입력을 통해 반드시 카메라끼리 전환할 수 있어야 합니다.- minilibX의 images를 사용하는걸 강 력 추 천 합니다
- 프로그램은 반드시 첫번째 인자로 .rt 확장자 파일을 받아야 합니다. rt 파일은
윈도우창/렌더링 이미지 사이즈를 포함하고, 모든 가능한 사이즈에서 miniRT가 동작해야합니다.- 각 요소 타입은 하나 혹은 하나 이상의 빈 줄로 구분됩니다.
- 각 요소들의 정보 타입은 하나 혹은 하나 이상의 스페이스로 구분됩니다.
- 각 요소 타입은 파일에 어떤 순서로든 설정될 수 있습니다.
- 대문자 요소들은 딱 한번만 정의될 수 있습니다.
- 각 요소의 첫번째 정보는 타입 식별자이고(하나 또는 두개의 문자), 다음과 같이 각 물체의 특정 정보를 주어진 순서대로 나타냅니다.
- 가장 기본적인 .rt 파일의 예시는 다음과 같습니다
- 어떤 종류의 설정 오류가 파일에서 발생 했든 프로그램은 반드시 적절히 exit 해야하고 명시적 에러 메시지와 함께 "Error\n"를 리턴해야 합니다.
TODO
- .rt 파일 파싱
- reocurrence of 같은 대문자, 에러
- missing needeed properties (ex, R에 해상도가 없다 등등 없으면 그리지 못할 것들. 혹은 default를 줘도 되려나? nono 빈 필드는 그냥 허용하지 않겠다), 에러
- 그 외 기본적인 file not found 등등 (open 에러처리)
헉.. 바뀌기 전 서브젝트였다.. 인트라 다운돼서 대충 아무거나 찾아서 해석했는데 ㅋ 정확히 시점은 모르겠지만 22년에 miniRT 를 한다면 이거 말고 최신버전을 보시길~ 이걸 볼 누군가를 위해 알립니다..