二次元平é¢ä¸Šã«n個ã®å††çŠ¶ã®å…‰æºãŒé…ç½®ã•ã‚Œã¦ã„る。ã‚ã‚‹å…‰æºãŒå…‰ã‚’å—ã‘ã‚‹ã¨ã€ä¸‹å›³ã®ã‚ˆã†ã«ãã®å…‰æºã®ä¸å¿ƒç‚¹ã‹ã‚‰æ‰‡çŠ¶ã«å…‰ãŒæ”¾å‡ºã•ã‚Œã‚‹ã€‚
å…‰æºã®ä¸å¿ƒç‚¹ã¯(x,y)ã€åŠå¾„ã¯rã§è¡¨ã•ã‚Œã‚‹ã€‚
å…‰ã¨ãªã‚‹æ‰‡å½¢ã¯è§’βã‚’ä¸å¿ƒã«-θ/2, +θ/2ã®æ–¹å‘ã¸å¯¾ç§°ã«åºƒãŒã‚Šã€ãã®åŠå¾„ã¯αã§ã‚る。
å…‰æºã®å††ãŒæ‰‡åž‹ã®å…‰ã«å®Œå…¨ã«è¦†ã‚れるã¨ãã€å…‰æºã¯ãã®å…‰ã‚’å—ã‘ãŸã¨ã¿ãªã•ã‚Œã‚‹ã€‚å…‰æºã‹ã‚‰æ”¾å‡ºã•ã‚Œã‚‹å…‰ã®å¼·ã•ã¯ã€å—ã‘ãŸå…‰ã®å¼·ã•ã®åˆè¨ˆã¨ãªã‚‹ã€‚ãŸã ã—ã€æ”¾å‡ºã•ã‚Œã‚‹å…‰ã®å¼·ã•ã«ã¯ä¸Šé™ãŒã‚ã‚Šã€ä¸Šé™ã‚’超ãˆãŸå ´åˆã€å…‰ã®å¼·ã•ã¯ä¸Šé™å€¤ã¨åŒã˜ã«ãªã‚‹ã€‚ãªãŠã€ã‚る光や光æºã«ã‚ˆã£ã¦å…‰ãŒé®ã‚‰ã‚Œã‚‹ã“ã¨ã¯ãªã„。
ã‚る地点ã«å˜åœ¨ã™ã‚‹å…‰æºã‚’目的光æºã¨ã™ã‚‹ã€‚目的光æºã§ã¯å…‰ãŒæ”¾å‡ºã•ã‚Œãšã€å—ã‘ã‚‹å…‰ã®å¼·ã•ã«åˆ¶é™ã¯ãªã„。 ã‚ãªãŸã¯åº§æ¨™(0,0)ã‹ã‚‰ã€ã‚ã‚‹å¼·ã•ã®æ‰‡å½¢ã®å…‰ã‚’ã€ä»»æ„ã®æ–¹å‘ã«ï¼‘度ã ã‘放出ã™ã‚‹ã“ã¨ãŒã§ãる。目的光æºãŒå—ã‘ã‚‹å…‰ã®å¼·ã•ã®åˆè¨ˆã®æœ€å¤§å€¤ã‚’求ã‚るプãƒã‚°ãƒ©ãƒ を作æˆã›ã‚ˆã€‚ãŸã ã—ã€å…¨ã¦ã®å…‰æºã«ãŠã„ã¦ã€æ”¾å‡ºã•ã‚ŒãŸå…‰ãŒå…ƒã®å…‰æºã«æˆ»ã‚‹ã‚ˆã†ãªå…¥åŠ›ãƒ‡ãƒ¼ã‚¿ã¯ä¸Žãˆã‚‰ã‚Œãªã„ã¨ä»®å®šã—ã¦ã‚ˆã„。ã¾ãŸã€ã“ã®å•é¡Œã§ã¯ã€é ˜åŸŸã®å¢ƒç•Œã‹ã‚‰ã®è·é›¢ãŒ0.000001以内ã®å ´åˆã€é ˜åŸŸä¸Šã¨ã¿ãªã™ã“ã¨ã«ã™ã‚‹ã€‚
n θ0 α0 power x1 y1 r1 θ1 α1 β1 maxpower1 . . xn yn rn θn αn βn maxpowern xn+1 yn+1 rn+1
1行目ã«ã¯ç›®çš„å…‰æºã‚’除ãå…‰æºã®æ•°nãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
2行目ã«æœ€åˆã«å…‰ã‚’放出ã™ã‚‹åº§æ¨™(0,0)ã®æƒ…å ±ã€3行目ã‹ã‚‰n+2行目ã«ç›®çš„ã§ãªã„å…‰æºã®æƒ…å ±ã€n+3行目ã«ç›®çš„å…‰æºã®æƒ…å ±ãŒãã‚Œãžã‚Œç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
å„æƒ…å ±ã«å¯¾ã—ã¦ã€xi,yiã¯å…‰æºã®ä¸å¿ƒç‚¹ã®åº§æ¨™ã€riã¯å…‰æºã®åŠå¾„ã€θiã¯å…‰ãŒåºƒãŒã‚‹è§’度ã€αiã¯å…‰ã®åŠå¾„ã€βiã¯å…‰ãŒå‘ã‹ã†æ–¹å‘を表ã™ã€‚2行目ã®powerã¯æœ€åˆã«æ”¾å‡ºã•ã‚Œã‚‹å…‰ã®å¼·ã•ã€3行目ã‹ã‚‰n+2行目ã®maxpoweriã¯æ”¾å‡ºã•ã‚Œã‚‹å…‰ã®ä¸Šé™ã‚’表ã™ã€‚
å…‰ã®æ–¹å‘βiã¯x軸ã®æ£ã®å‘ãã‹ã‚‰å時計回りã«å›žè»¢ã—ã€å„角度ã®å˜ä½ã¯åº¦ã¨ã™ã‚‹ã€‚
入力ã¯ä»¥ä¸‹ã®æ¡ä»¶ã‚’満ãŸã™ã€‚
目的光æºã‚’å…¨ã¦å›²ã†ã‚ˆã†ãªå…‰ã®å¼·ã•ã®åˆè¨ˆã®æœ€å¤§å€¤ã‚’1è¡Œã«å‡ºåŠ›ã›ã‚ˆã€‚
1 90 10 20 3 3 1 90 10 315 10 6 0 1
30
2 90 10 10 -3 0 1 45 10 90 10 -6 0 2 30 3 180 10 -9 0 1
10