note

    [Three.js] GIS Developer ๋‹˜์˜ Three.js ๊ฐ•์ขŒ - 1

    GIS Developer ๋‹˜์˜ Three.js ๊ฐ•์ขŒ : https://www.youtube.com/watch?v=ZGACJosABBw ํ•„๊ธฐ์šฉ ๊นƒํ—ˆ๋ธŒ : https://github.com/sduu/three-tutorial ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ 1. Visual Studio Code ์„ค์น˜ https://code.visualstudio.com/ 2. Three.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ : https://threejs.org/ : ์‹ค์Šต์€ module ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ๋•Œ๋ฌธ์— three.module.js ํŒŒ์ผ์„ ์‚ฌ์šฉํ•œ๋‹ค. 3. ์‹ค์Šต์„ ์ง„ํ–‰ํ•  html ํŒŒ์ผ์„ ์ƒ์„ฑ 4. ํŽ˜์ด์ง€ ์‹คํ–‰์„ ์œ„ํ•ด ์„ค์ • ํŒŒ์ผ์„ ์ƒ์„ฑ - VSCode ์‹คํ–‰ ๋ฐ ๋””๋ฒ„๊ทธ๋ฅผ ์„ ํƒ (ctrl + shift + D) - launch.json ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ ํƒ ..

    [JS] ํž˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 3 | ์นธ ์•„์นด๋ฐ๋ฏธ

    [JS] ํž˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 3 | ์นธ ์•„์นด๋ฐ๋ฏธ

    https://ko.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-forces/a/gravitational-attraction ์ค‘๋ ฅ ์ธ๋ ฅ ์งˆ๋Ÿ‰์„ ๊ฐ€์ง„ ๋ชจ๋“  ๋ฌผ์ฒด๋Š” ๋ชจ๋“  ๋‹ค๋ฅธ ๋ฌผ์ฒด์— ์ค‘๋ ฅ์„ ๊ฐ€ํ•œ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ค‘๋ ฅ์˜ ์„ธ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์‹์ด ์žˆ๋‹ค. F ๋Š” ์ค‘๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์œผ๋กœ, ์ตœ์ข…์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ applyForce() ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋ ค๋Š” ๋ฒกํ„ฐ๋‹ค. G ๋Š” ๋งŒ์œ  ์ธ๋ ฅ์˜ ์ƒ์ˆ˜๋กœ 6.67428 x 10^-11 ์ดˆ(s) ์ œ๊ณฑ ๋ถ„์˜ ํ‚ฌ๋กœ๊ทธ๋žจ(kg) ๋ถ„์˜ ๋ฏธํ„ฐ(m) ์„ธ์ œ๊ณฑ์ด๋‹ค. ์ด๊ฒƒ์€ ํž˜์„ ๋ณด๋‹ค ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ณด๋‹ค ๊ฐ•ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์ƒ์ˆ˜๋‹ค. ์ด ๊ฐ’์„ 1๋กœ ๋‘๊ณ  ๋ฌด์‹œํ•ด๋„ ํฐ์ผ๋‚˜์ง€ ์•Š๋Š”๋‹ค. mโ‚โ€‹ ๊ณผ ..

    [JS] ํž˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 2 | ์นธ ์•„์นด๋ฐ๋ฏธ

    [JS] ํž˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 2 | ์นธ ์•„์นด๋ฐ๋ฏธ

    https://ko.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-forces/a/modeling-gravity-and-friction ์ค‘๋ ฅ ๋ฐ ๋งˆ์ฐฐ๋ ฅ ๋ชจ๋ธ๋ง ์ง€๋‚œ ์˜ˆ์ œ์—์„œ ๋งŒ๋“  ์ค‘๋ ฅ์„ ๊ฐœ์„ ํ•˜๋ฉด์„œ ์—ฌ๊ธฐ์— ๋งˆ์ฐฐ๋ ฅ์„ ์ถ”๊ฐ€์‹œ์ผœ ๋ณด์ž. ์ง€๊ตฌ์˜ ์ค‘๋ ฅ ๋‰ดํ„ด์˜ ์ œ2๋ฒ•์น™์— ๋”ฐ๋ผ ์งˆ๋Ÿ‰์ด ์ž‘์œผ๋ฉด ๊ฐ€์†๋„๊ฐ€ ํฌ๋‹ค๊ณ  ์„ค์ •ํ–ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์ค‘๋ ฅ์€ ๋ฌผ์ฒด์˜ ์งˆ๋Ÿ‰์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ๋ฌผ์ฒด๊ฐ€ ๋ฌด๊ฑฐ์šธ์ˆ˜๋ก ํž˜์ด ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ํž˜์ด ์งˆ๋Ÿ‰์— ๋”ฐ๋ฅธ๋‹ค๋ฉด, ํž˜์„ ์งˆ๋Ÿ‰์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ์งˆ๋Ÿ‰์€ ์‚ฌ๋ผ์ง„๋‹ค. ํ”„๋กœ๊ทธ๋žจ์— ๋งŒ๋“ค์—ˆ๋˜ ์งˆ๋Ÿ‰์— ๋”ฐ๋ฅธ ๊ฐ€์†๋„(์ค‘๋ ฅ)์— ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋งˆ์ฐฐ๋ ฅ ๋งˆ์ฐฐ๋ ฅ์€ ์‚ฐ์ผ์ ์ธ ํž˜์ด๋‹ค. ์‚ฐ์ผ์ ์ธ ํž˜..

    [JS] ํž˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 1 | ์นธ ์•„์นด๋ฐ๋ฏธ

    [JS] ํž˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 1 | ์นธ ์•„์นด๋ฐ๋ฏธ

    https://ko.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-forces/a/newtons-laws-of-motion ๋‰ดํ„ด์˜ ์šด๋™ ๋ฒ•์น™ ๋ฒกํ„ฐ(vector)์ฒ˜๋Ÿผ, ํž˜(force)์€ ๋‹ค์–‘ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํž˜์€ ์–ด๋–ค ๊ฐ•๋ ฅํ•œ ๋ฌผ๋ฆฌ๋ ฅ, ์ด๋ฅผํ…Œ๋ฉด, ๋ฐ”์œ„๋ฅผ ํฐ ํž˜์œผ๋กœ ๋ฏธ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฐœ๋…์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃฐ ํž˜ ์˜ ์ •์˜๋Š” ๋ฌผ๋ฆฌํ•™์—์„œ ๋ฐฐ์šฐ๋Š” ํž˜์ด๊ณ , ์•„์ด์ž‘ ๋‰ดํ„ด(Isaac Newton)์˜ ์šด๋™์˜ ๋ฒ•์น™์—์„œ ๋น„๋กฏ๋œ ๊ฐœ๋…์ด๋‹ค. ํž˜์€ ์งˆ๋Ÿ‰์„ ์ง€๋‹Œ ๋ฌผ์ฒด๋ฅผ ๊ฐ€์†ํ•˜๋Š” ๋ฒกํ„ฐ๋‹ค. ๋‰ดํ„ด์˜ ์ œ1๋ฒ•์น™ ๋‰ดํ„ด์˜ ์ œ1๋ฒ•์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค. ์›€์ง์ด์ง€ ์•Š๋Š” ๋ฌผ์ฒด๋Š” ๊ณ„์† ์›€์ง์ด์ง€ ์•Š์œผ๋ ค ํ•˜๊ณ  ์›€์ง์ด๋Š” ๋ฌผ..

    [JS] ๋ฒกํ„ฐ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 3 | ์นธ ์•„์นด๋ฐ๋ฏธ

    [JS] ๋ฒกํ„ฐ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 3 | ์นธ ์•„์นด๋ฐ๋ฏธ

    https://ko.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-vectors/a/static-functions-vs-instance-methods ์ •์  ํ•จ์ˆ˜ vs. ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ #3 (๋งˆ์šฐ์Šค๋ฅผ ๋”ฐ๋ผ ๊ฐ€์†)์„ ์‚ดํŽด๋ณด๊ธฐ ์ „์— ๋ฒกํ„ฐ์™€ PVector๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ•„์š”ํ•œ ์ค‘์š”ํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ •์ (static) ๋ฉ”์†Œ๋“œ์™€ ์ธ์Šคํ„ด์Šค(instance) ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž. x ๊ฐ’์€ 0์ด๊ณ  y๋ฅผ ๋”ํ•ด x๋Š” 5๊ฐ€๋˜๋Š” ์ฝ”๋“œ๋ฅผ PVector ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋ฒกํ„ฐ v์˜ ๊ฐ’์€ (0,0)์ด๊ณ  v์— u๋ฅผ ๋”ํ•ด v๋Š” (4,5)๊ฐ€ ๋œ๋‹ค..

    [JS] ๋ฒกํ„ฐ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 2 | ์นธ ์•„์นด๋ฐ๋ฏธ

    [JS] ๋ฒกํ„ฐ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 2 | ์นธ ์•„์นด๋ฐ๋ฏธ

    https://ko.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-vectors/a/vector-magnitude-normalization ๋ฒกํ„ฐ ํฌ๊ธฐ์˜ ์ •๊ทœํ™” ํ”ผํƒ€๊ณ ๋ผ์Šค์˜ ์ •๋ฆฌ ๊ณต์‹์„ ํ™œ์šฉํ•˜๋ฉด ์‹ค์ œ ๋ฒกํ„ฐ์˜ ๊ธธ์ด(ํ”ฝ์…€)๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ PVector ๊ฐ์ฒด์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. PVector.prototype.mag = function() { // sqrt : ์ œ๊ณฑ๊ทผ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ return sqrt(this.x * this.x + this.y * this.y); }; ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ •๊ทœํ™”๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ •๊ทœํ™”๋ž€ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ‘œ์ค€ํ™” ์‹œํ‚ค๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฒƒ..

    [JS] ๋ฒกํ„ฐ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 1  | ์นธ ์•„์นด๋ฐ๋ฏธ

    [JS] ๋ฒกํ„ฐ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ 1 | ์นธ ์•„์นด๋ฐ๋ฏธ

    โœ์ฐจ์žฅ๋‹˜๊ป˜์„œ ์•Œ๋ ค์ฃผ์‹  ์‚ฌ์ดํŠธ์—์„œ ๋ฒกํ„ฐ ์•Œ์•„๋ณด๊ธฐ https://ko.khanacademy.org/ ๋ฒกํ„ฐ๋ž€? ๋ฒกํ„ฐ๋Š” ์‚ฌ๋ฌผ์˜ ์›€์ง์ž„์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒกํ„ฐ๋Š” ํ™”์‚ดํ‘œ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ํ™”์‚ดํ‘œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ชฝ์€ ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ํ™”์‚ดํ‘œ์˜ ๊ธธ์ด๋Š” ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์™œ ๋ฒกํ„ฐ๋ฅผ ์‚ฌ์šฉํ• ๊นŒ? ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์ข€ ๋” ์ ์€ ์ˆ˜์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์›€์ง์ž„์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๋™์•ˆ ๋ฐ˜๋ณต์ ์ธ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ํŽธ๋ฆฌํ•œ ํ•จ์ˆ˜ ์ง‘ํ•ฉ์˜ ์—ญํ• ์„ ํ•œ๋‹ค. pVector๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ˆ์‹œ ์บ”๋ฒ„์Šค๋ฅผ ์ด์šฉํ•ด์„œ Bouncing Ball ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๋„ํ˜•์ด ๊ฐ ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํŠน์ • ํ”ฝ์…€๋งŒํผ ๊ฐ€๋กœ ๋ฐ ์„ธ๋กœ๋กœ ์›€์ง์ด๋„๋ก ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋˜์–ด์žˆ๋‹ค. ํ˜„์žฌ ๋ณ€์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. (x ์ขŒํ‘œ, y ์ขŒํ‘œ, x ์†..