Parser - miniRT-jiphyeonjeon/MiniRT GitHub Wiki

mandatory ๊ธฐ์ค€ Parse ์„ค๋ช…

1. ์ธ์ž๊ฐ’ ๋ฐ open ์ฒดํฌ

  • ์ธ์ž๊ฐ’ - ํ™•์žฅ์ž๋ช… .rt ์ฒดํฌ
./minirt cjang.rt		(o)

./minirt test1.rt test2.rt	(x)
./minirt			(x)
./minirt cjang			(x)
  • open - fd ์ฒดํฌ
./minirt cjang.rt		(o)

./minirt cjam.rt		(x)

2. gnl๊ณผ split์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ํŒŒ์‹ฑ

  • gnl - openํ•œ ๊ฒฐ๊ณผ๊ฐ’์ธ fd๊ฐ’์„ ์ด์šฉํ•˜์—ฌ get_next_line์œผ๋กœ read๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•œ ์ค„์”ฉ ์ฝ์Œ
  • split - ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ white space๋ฅผ ๊ธฐ์ค€์œผ๋กœ splitํ•œ๋‹ค.

3. ๋ฌธ์ž์—ด์—์„œ ๋„ํ˜•์˜ ํƒ€์ž…, ๋“ค์–ด์™€์•ผ ํ•  ์ •๋ณด ๊ฐœ์ˆ˜ ์ฒดํฌ

  • ๋„ํ˜• ํƒ€์ž… - splitํ•œ ๋ฌธ์ž์—ด์˜ ๋งจ ์•ž์˜ ๊ฐ’์ด ํ•ด๋‹นํ•˜๋Š” ๋„ํ˜•์˜ ๋ฌธ์ž์—ด์ธ์ง€ ์•„๋‹Œ์ง€ ์ฒดํฌ
  • ์ •๋ณด ๊ฐœ์ˆ˜ - ๋„ํ˜• ํƒ€์ž…๊ณผ ๋“ค์–ด์™€์•ผ ํ•  ์ •๋ณด ๊ฐœ์ˆ˜๊ฐ€ ์œ ํšจํ•œ์ง€ ์ฒดํฌ
A 0.2				255,255,255	(o)
C -2,2,1	-1,1,1	90			(o)
L 0,20,0		0.6	255,255,255	(o)
sp 0,-100.5,-1		200	204,204,0	(o)
cy 1,-0.5,-1	0,1,0   1 1	204,153,51	(o)
pl 0,0,-5	0,0,1		30,127,30	(o)

# ๋„ํ˜• ํƒ€์ž…
0.2				255,255,255	(x)
PL 0,0,-5	0,0,1		30,127,30	(x)
B -2,2,1	-1,1,1	90			(x)

# ์ •๋ณด ๊ฐœ์ˆ˜
pl 0,0,-5	0,0,1	1 1	30,127,30	(x)
pl 1,2,3					(x)
pl 1, 2, 3	0, 0, 1		30,127,30	(x)
pl 1 , 2 , 3	0,0,1		30,127,30	(x)

4. vector๊ฐ’ ์‰ผํ‘œ ๊ธฐ์ค€ ํŒŒ์‹ฑ, char * ํ˜•์—์„œ doubleํ˜•์œผ๋กœ ๋ณ€๊ฒฝ.

  • vector(x,y,z)๊ฐ’ - ์‰ผํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์‹ฑ. ์ด ๋•Œ, split์ด ์•„๋‹ˆ๋ผ strsep์„ ์ด์šฉํ•˜์—ฌ ์‰ผํ‘œ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.
pl 0,0,-5	0,0,1		30,127,30	(o)

pl 0a,0,-5	0,0,1		30,127,30	(x)
pl 0a,0,-5	0,0,1		30,,127,30	(x)
pl 0a,0,-5	0,0,1		30,127,30,	(x)
pl 0,0,-5	0,0		bb,127,30	(x)

sp 0,-100.5,-1		2.	204,204,0	(o)
sp 0,-100.5,-1		2..	204,204,0	(x)

5. doubleํ˜•์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๊ฐ’ ๋ฒ”์œ„ ์ฒดํฌ

  • ๊ฐ’ ๋ฒ”์œ„ - ๊ณผ์ œ์— ๋‚˜์™€์žˆ๋Š” ๊ธฐ์ค€๊ฐ’ ์ด๋‚ด์ธ์ง€ ์ฒดํฌ
    ๋‹ค๋งŒ, FOV์—์„œ๋Š” 180 ๋ฏธ๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค. 180๋„๊ฐ€ ๋  ๊ฒฝ์šฐ ํ™”๋ฉด์˜ ์˜์—ญ๊ณผ ํ™”๊ฐ์ด ์„œ๋กœ ํ‰ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ก ์ƒ ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
#  [x,y,z point]		[normalized vector]	[ratio]	[diameter]	[height]	[FOV]	[RGB]
A							[0-1]						[0-255],[0-255],[0-255]	(o)
C  [none],[none],[none]		[-1~1],[-1~1],[-1~1]						[0-180)				(o)
L  [none],[none],[none]					[0-1]						[0-255],[0-255],[0-255]	(o)
sp [none],[none],[none]						[0-]					[0-255],[0-255],[0-255]	(o)
cy [none],[none],[none]		[-1~1],[-1~1],[-1~1]		[0-]		[0-]			[0-255],[0-255],[0-255]	(o)
pl [none],[none],[none]		[-1~1],[-1~1],[-1~1]							[0-255],[0-255],[0-255]	(o)
# ์ด์™ธ๋Š” x

6. double ๊ฐ’๋“ค์„ ํ•ด๋‹น ํƒ€์ž…์˜ ๊ตฌ์กฐ์ฒด์— ์ •์˜

  • ๊ฐ’ - ํ•„์š”ํ•œ ๊ฐ’์— ๋งž๊ฒŒ ์ •์˜
[normalized vector]	๋ฒกํ„ฐ์˜ ๊ธธ์ด๋ฅผ 1๋กœ ์žฌ์„ค์ •.
[diameter]		diameter / 2
[RGB]			[0-255],[0-255],[0-255] -> [0-1],[0-1],[0-1]

๊ธฐํƒ€์‚ฌํ•ญ

ํด๋”๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ

open์—์„  ์‹คํ–‰์ด ๋˜์ง€๋งŒ, get_next_line ๋‚ด๋ถ€์˜ readํ•จ์ˆ˜์—์„œ ์ฝ์ง€ ๋ชปํ•œ๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์—ฌ ์ž˜๋ชป ์ฝ์—ˆ์Œ์„ ์—๋Ÿฌ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ