๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HLSL

๋ฃจํ”„ ํŒจํ„ด ๋งŒ๋“ค๊ธฐ

by z03y 2024. 10. 29.



๐ŸŒ
 ๋ฃจํ”„ ํŒจํ„ด ๋งŒ๋“ค๊ธฐ

float result = 0;
result = length(pos-uv)<size; // draw circle
return(result);

float result = 0;

for (int i = 0; i < nSides; i++)
{
   float angle = (i/ nSides) * 2 * 3.14;
   float2 pos = center+radius * float2(cos(angle), sin(angle));
   result + = length(pos-uv) <size; // draw circle
}

return(result);

 

 

result +=lenght(pos-uv) <size; ๋กœ ๊ทธ๋ฆฌ๋Š” ์ž‘์€ ์›๋“ค์€ ๊ฐ๊ฐ ์ค‘์‹ฌ์ (center)๊ณผ ๋ฐ˜์ง€๋ฆ„(radius)๋ฅผ ๋”ํ•œ ์œ„์น˜(position)์— float๋˜๊ณ  cos(๊ฐ๋„)์™€ sin(๊ฐ๋„)๋ฅผ ๊ณฑํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ์›์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์›์˜ ๋‘˜๋ ˆ์— ํ•ด๋‹น๋˜๋Š” ํ•œ ์ ์˜ x,y ์ขŒํ‘œ๋ฅผ ๊ตฌํ•  ๋•Œ,

 

โญ cos์„ ํ™œ์šฉํ•˜์—ฌ x๊ฐ’์„ ๊ตฌํ•˜๊ธฐ

cos(30๋„) = 100 / x √3/2 = 100 / x

x = 200 / √3

 

โญ y๊ฐ’์€ sin์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ•˜๊ธฐ

sin(30๋„) = 100 / y 1/2 = 100 / y

= 50

 


 

๐ŸŒ ๊ฐ๋„ ๋ณ€์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์‹์— ๋Œ€ํ•œ ๋‹จ๊ณ„ ๋ณ„ ๋ถ„์„

 

float angle = (i/ nSides) * 2 * 3.14;

  1. ์›์˜ ๊ฐ๋„ : ์›์€ 360๋„ ๋˜๋Š” 2π ๋ผ๋””์•ˆ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ π์˜ ๊ทผ์‚ฌ๊ฐ’์œผ๋กœ 3.14๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  2. ๊ฐ ์ ์˜ ๋ถ„ํฌ : ์›์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด ์›์ฃผ(์›์˜ ๋‘˜๋ ˆ) ์œ„์— ์ ๋“ค์„ ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฐฐ์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์ด ์ ๋“ค์€ ์ค‘์‹ฌ์—์„œ ๋™์ผํ•œ ๊ฐ๋„๋งŒํผ ๋–จ์–ด์ ธ์•ผ ํ•œ๋‹ค.
  3. ๊ฐ ์ ์˜ ๊ฐ๋„ ๊ณ„์‚ฐ : nSides๋Š” ์›์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹ค๊ฐํ˜•์˜ ๋ณ€ ๊ฐœ์ˆ˜, ์ฆ‰ ์ ์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ๊ฐ ์  ์‚ฌ์ด์˜ ๊ฐ๋„ ๊ฐ„๊ฒฉ์€ ์ „์ฒด ์›์˜ ๊ฐ๋„ 2π๋ฅผ nSides๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด๋‹ค. ๊ฐ ์ ์˜ ๊ฐ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” i๋ฒˆ์งธ ์ ์ด ์›์˜ ๋ช‡ ๋ฒˆ์งธ ์œ„์น˜์— ์žˆ๋Š” ์ง€๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ i/nSides๋Š” ์ „์ฒด ์›์ฃผ๋ฅผ ๋ช‡ ๋“ฑ๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ๊ฒƒ์ธ์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋ฅผ 2π ๊ณฑํ•˜๋ฉด ํ•ด๋‹น ์ ์˜ ๊ฐ๋„๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

ex) nSides๊ฐ€ 4์ธ ๊ฒฝ์šฐ,

(๋ผ๋””์•ˆ ๊ฐ’์„ ๋„(degree) ๋‹จ์œ„๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ๋ผ๋””์•ˆ ๊ฐ’์— 180/π ํ•œ๋‹ค.)

 

 

nSides๊ฐ€ 5์ธ ๊ฒฝ์šฐ, nSides๊ฐ€ 5์ธ ๊ฒฝ์šฐ์—๋Š” 72๋„ ๊ฐ„๊ฒฉ.. (5/360 =72)

 

 

 

 

 

 

 

๐ŸŒ Ref. 

https://charlezz.com/?p=46165

 

๋ฐ˜์‘ํ˜•