
ãªãŒãã£ãªä¿¡å·ã®åŠçãç ç©¶ãããšããç§ã®è³ã¯æç¶ãåã«ãŒãçæãšã®é¡äŒŒæ§ãåŒãåºãå§ããŸããã ãã®èšäºã§ã¯ãä¿¡å·åŠçãšã«ãŒãçæããªã³ã¯ããåçã®æŠèŠã説æããŸãã äœãæ°ããããšãçºèŠãããšã¯æããŸããããçµè«ã®ããã€ãã¯ç§ã«ãšã£ãŠæ°ãããã®ã ã£ãã®ã§ãæžãçããŠèªè
ãšå
±æããããšã«ããŸããã åçŽãªãããã¯ïŒåšæ³¢æ°ãæ¯å¹
ããã€ãºã®è²ããã€ãºã®äœ¿çšïŒã®ã¿ãèæ
®ããä»ã®ãããã¯ïŒé¢æ£ããã³é£ç¶é¢æ°ãFIR / IIRãã£ã«ã¿ãŒãé«éããŒãªãšå€æãè€çŽ æ°ïŒã«ã¯è§ŠããŸããã ãã®èšäºã®æ°åŠã¯äž»ã«æ£åŒŠæ³¢ã«é¢é£ããŠããŸãã
ãã®èšäºã§ã¯ ãæãåçŽãªãã®ããããè€éãªãã®ãŸã§ã®
æŠå¿µã«çŠç¹ãåœãŠãŠããŸã ã ãã€ãºé¢æ°ã䜿çšããŠå°åœ¢ãçŽæ¥çæããå Žåã¯ã
ä»ã®èšäºãã芧ãã ããã
ä¹±æ°ã䜿çšããåºæ¬ããå§ããŠã次ã«1次å
ã®é¢šæ¯ã®åäœã説æããŸãã åãæŠå¿µã2DïŒ
ãã¢ãåç
§ïŒãš3Dã§ãæ©èœããŸãã [
å
ã®èšäº]ã®ã¹ã©ã€ããŒãåãããŠãåäžã®ãã©ã¡ãŒã¿ãŒãããŸããŸãªçš®é¡ã®ãã€ãºãã©ã®ããã«è¡šçŸã§ãããã確èªããŠãã ããã
ãã®èšäºããæ¬¡ã®ããšãåŠã³ãŸãã
- ããã15è¡ã®ã³ãŒãã§åæ§ã®ã©ã³ãã¹ã±ãŒããçæããæ¹æ³
- èµ€ããã³ã¯ãçœãéã玫ã®ãã€ãºãšã¯
- æç¶ã颿°ã®çæã«ãã€ãºé¢æ°ã䜿çšããæ¹æ³
- äžç¹ãªãã»ãããããŒãªã³ãã€ãºãããã³ãã©ã¯ã¿ã«ãã©ãŠã³éåãã©ã®ããã«é©çšãããã
ããã«ã2次å
ã®é«ããããã®3DèŠèŠåã®äœæãªã©ã2Dãã€ãºã®å®éšãè¡ããŸãã
1.ã©ã³ãã æ§ã圹ç«ã€ã®ã¯ãªãã§ããïŒ
å
±éç¹ãšç°ãªãç¹ãæã€åºåããŒã¿ã®ã»ãããååŸããã«ã¯ããããã®æé çæãå¿
èŠã§ãã ããšãã°ããã¹ãŠã®Minecraftãããã«ã¯ããã€ãªãŒã é åãã°ãªãããµã€ãºãå¹³åãã€ãªãŒã ãµã€ãºãé«ããå¹³åæŽçªãµã€ãºãåã¿ã€ãã®ç³ã®å²åãªã©ãå€ãã®å
±éç¹ããããŸãã ãããããã€ãªãŒã ã®å ŽæãæŽçªã®å Žæãšåœ¢ç¶ãéã®é
眮ãªã©ã«ãéãããããŸãã èšèšè
ã¯ãã©ã®åŽé¢ãåããŸãŸã«ããã©ã®åŽé¢ãç°ãªãããã«ããããæ±ºå®ãããã®éãã®çšåºŠãåãå¿
èŠããããŸãã
ããŸããŸãªåŽé¢ã«ã€ããŠã¯ãéåžžãä¹±æ°ãžã§ãã¬ãŒã¿ãŒã䜿çšããŸãã è¶
ã·ã³ãã«ãªã«ãŒããžã§ãã¬ãŒã¿ãŒãäœæããŸãããã20ãããã¯ã®è¡ãçæãããããã¯ã®1ã€ã«éã®å®ç®±ãå«ãŸããŸãã å¿
èŠãªã«ãŒããããã€ã説æããŸãããïŒå®ç©ã«ã¯ãxãã®ããŒã¯ãä»ããŠããŸãïŒïŒ
1 ........x........... 2 ...............x.... 3 .x.................. 4 ......x............. 5 ..............x.....
ãããã®ã«ãŒãã®å
±éç¹ã«æ³šæããŠãã ããããããã¯ãã¹ãŠãããã¯ã§æ§æããããããã¯ã¯åãã©ã€ã³äžã«ãããã©ã€ã³ã¯20ãããã¯ã®é·ããæã¡ã2çš®é¡ã®ãããã¯ãšã¡ããã©1ã€ã®å®ç®±ããããŸãã
ãããã1ã€ã®ç°ãªãåŽé¢ããããŸã-ãããã¯ã®å Žæã§ãã 0ïŒå·ŠïŒãã19ïŒå³ïŒãŸã§ã®ä»»æã®äœçœ®ã«é
眮ã§ããŸãã
ä¹±æ°ã䜿çšããŠããã®ãããã¯ã®äœçœ®ãéžæã§ããŸãã æãç°¡åãªæ¹æ³ã¯
ã0ã19ã®ç¯å²ã®
ä¹±æ°ãäžæ§ã«éžæããããšã§ããããã¯ã0ã19ã®äœçœ®ãéžæãã確çãåãã§ããããšãæå³ããŸãã ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã«ã¯ãä¹±æ°ãåäžã«çæããæ©èœããããŸãã Pythonã§ã¯ãããã¯é¢æ°
random.randint(0,19)
ã§ããããã®èšäºã§ã¯
random(0,19)
ãšãã衚èšã䜿çšããŸãã Pythonã³ãŒãã®ãµã³ãã«ã¯æ¬¡ã®ãšããã§ãã
def gen(): map = [0] * 20
ãããããã§ã¹ããã«ãŒãã®å·ŠåŽã«é
眮ããå¿
èŠããããšããŸãã ãããè¡ãã«ã¯ãä¹±æ°ã®ç°çš®éžæãå¿
èŠã§ãã ãããå®è£
ããã«ã¯å€ãã®æ¹æ³ããããŸãã ãããã®1ã€ã¯ãäžæ§ãªæ¹æ³ã§ä¹±æ°ãéžæãããããå·Šã«ã·ããããããšã§ãã ããšãã°ã
random(0,19)/2
詊ãããšãã§ããŸãã ããã¯Pythonã³ãŒãã§ãïŒ
def gen(): map = [0] * 20 pos = random.randint(0, 19) // 2 map[pos] = 1 return map for i in range(5): print_chart(i, gen())
ããããå®éã«ã¯ããã¯ãŸã£ããå¿
èŠãããŸããã§ããã ç§ã¯æã
å³ã«å®ç©ã欲ããã£ãããããé »ç¹ã«å·Šã«å®ç©ã欲ããã å®ç©ãå·Šã«ç§»åããå¥ã®æ¹æ³ã¯ã
sqr(random(0,19))/19
ãããªããšãããŠæ°åãäºä¹ããããšã§ãã ãŒãã®å Žåã20ã20ã§å²ã£ãå€ã¯0ã§ãã19ã§ããå Žåã19ã19ã§å²ã£ãå€ã¯19ã«ãªããŸãã 19ã§5ã«çããã0ãã19ãŸã§ã®ç¯å²ãç¶æããããäžéã®æ°å€ãå·Šã«ç§»åããã ãã®åé
åžèªäœã¯éåžžã«æçšãªææ³ã§ããã以åã®ãããžã§ã¯ãã§ã¯å¹³æ¹ãå¹³æ¹æ ¹ããã®ä»ã®é¢æ°ã䜿çšããŠããŸããã ïŒ
ãã®ãµã€ãã«ã¯ãã¢ãã¡ãŒã·ã§ã³ã§äœ¿çšãããæšæºã®ãã©ãŒã 倿Žé¢æ°ããããŸãã颿°ã«ã«ãŒãœã«ãåããããšããã¢ã衚瀺ãããŸããïŒäºä¹ã䜿çšããPythonã³ãŒãã¯æ¬¡ã®ãšããã§ãã
def gen(): map = [0] * 20 pos = random.randint(0, 19) pos = int(pos * pos / 19) map[pos] = 1 return map for i in range(1, 6): print_chart(i, gen())
ãªããžã§ã¯ããå·Šã«ç§»åããå¥ã®æ¹æ³ã¯ãæåã«ã©ã³ãã ã«ä¹±æ°ã®ç¯å²ã®å¶éãéžæããæ¬¡ã«0ããç¯å²ã®å¶éãŸã§ã®çªå·ãã©ã³ãã ã«éžæããããšã§ãã ç¯å²ã®å¶éã19ã®å Žåãçªå·ã¯ã©ãã«ã§ã眮ããŸãã ç¯å²ã®å¶éã10ã®å Žåãæ°å€ã¯å·ŠåŽã«ã®ã¿é
眮ã§ããŸãã Pythonã³ãŒãã¯æ¬¡ã®ãšããã§ãã
def gen(): map = [0] * 20 limit = random.randint(0, 19) pos = random.randint(0, limit) map[pos] = 1 return map for i in range(5): print_chart(i, gen())
åäžãªä¹±æ°ãååŸããããããåžæããç¹æ§ãæã€ç°çš®ã«å€æããå€ãã®æ¹æ³ããããŸãã ã²ãŒã ãã¶ã€ããŒãšããŠãä¹±æ°ã®ååžãéžæã§ããŸãã ä¹±æ°ã䜿çšããŠããŒã«ãã¬ã€ã³ã°ã²ãŒã ã®æå®³ã倿ããæ¹æ³ã«é¢ããèšäºãæžããŸããã ããªãã¯ã«ã¯ããŸããŸãªäŸããããŸãã
èŠçŽãããšïŒ
- æç¶ãåçæã§ã¯ãäœãåããŸãŸã§äœãå€ããããæ±ºå®ããå¿
èŠããããŸãã
- ä¹±æ°ã¯ãå€åããéšåãåããã®ã«åœ¹ç«ã¡ãŸãã
- ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã§ã¯ãåäžã«éžæå¯èœãªä¹±æ°ãååŸã§ããŸãããå€ãã®å Žåãç°çš®ã®éžæå¯èœãªä¹±æ°ãå¿
èŠã§ãã ããããååŸããããŸããŸãªæ¹æ³ããããŸãã
2.ãã€ãºãšã¯äœã§ããïŒ
ãã€ãºã¯ãéåžžãã©ã€ã³äžãŸãã¯ã°ãªããå
ã«ããäžé£ã®ä¹±æ°ã§ãã
å€ããã¬ãã§ä¿¡å·ã®ãªããã£ã³ãã«ã«åãæ¿ãããšãç»é¢ã«ã©ã³ãã ãªé»ãšçœã®ããããèŠããŸããã ããã¯ãã€ãºã§ãïŒãããã®å®å®ç©ºéïŒïŒã ã¹ããŒã·ã§ã³ãªãã§ã©ãžãªãã£ã³ãã«ã«ãã¥ãŒãã³ã°ãããšããã€ãºãèãããŸãïŒå®å®ããèãããããä»ã®å Žæããèããããã¯ããããŸããïŒã
ä¿¡å·åŠçã§ã¯ãéåžžããã€ãºã¯æãŸãããªãåŽé¢ã§ãã éšãããéšå±ã§ã¯ãéããªéšå±ããã話ãçžæã®å£°ãèããã«ããã§ãã ãªãŒãã£ãªãã€ãºã¯ãäžåã«äžŠãã ä¹±æ°ã§ãïŒ1DïŒã ãã€ãºã®å€ãç»åã§ã¯ãé®®æãªç»åãããåçãèŠã«ãããªããŸãã ã°ã©ãã£ãã¯ãã€ãºã¯ãã°ãªããïŒ2DïŒã«ããä¹±æ°ã§ãã 3Dã4Dãªã©ã§ãã€ãºãäœæã§ããŸãã
ã»ãšãã©ã®å Žåããã€ãºãé€å»ããããšããŸãããå€ãã®èªç¶ãªã·ã¹ãã ã¯ãã€ãºãå€ãããã«èŠãããããèªç¶ã«èŠãããã®ãçæããã«ã¯ããã€ãºã远å ããå¿
èŠããããŸãã å®éã®ã·ã¹ãã ã¯ãã€ãºãå€ãããã«èŠããŸãããéåžžã¯æ§é ã«åºã¥ããŠããŸãã 远å ãããã€ãºã¯åãæ§é ã§ã¯ãããŸããããã·ãã¥ã¬ãŒã·ã§ã³ãããã°ã©ãã³ã°ãããããã¯ããã«åçŽãªã®ã§ããã€ãºã䜿çšããŸãããšã³ããŠãŒã¶ãŒãããã«æ°ä»ããªãããšãé¡ã£ãŠããŸãã ãã®åŠ¥åã«ã€ããŠã¯åŸã§èª¬æããŸãã
ãã€ãºã®æçšæ§ã®ç°¡åãªäŸãèŠãŠã¿ãŸãããã äžèšã§äœæãã1次å
ã®å°å³ããããšä»®å®ããŸãããå®ç®±ã®ä»£ããã«ãè°·ãäžãå±±ã®ãã颚æ¯ãäœæããå¿
èŠããããŸãã åãã€ã³ãã§ä¹±æ°ã®åäžãªéžæã䜿çšããããšããå§ããŸãããã
random(1,3)
ã1ã®å Žåã2-äžã3-å±±ã®å Žåãè°·ãšèŠãªãããŸãã ä¹±æ°ã䜿çšããŠé«ãããããäœæããŸãããé
åå
ã®åãã€ã³ãã«ã€ããŠãå°åœ¢ã®é«ããä¿åããŸããã ã©ã³ãã¹ã±ãŒããäœæããããã®Pythonã³ãŒãã¯æ¬¡ã®ãšããã§ãã
for i in range(5): random.seed(i)
ããŒãããããã®ã«ãŒãã¯ãç§ãã¡ã®ç®çã«ãšã£ãŠãã©ã³ãã ããããããã«èŠããŸãã ãããããè°·ãäžã®åºãé åãå¿
èŠã§ãããå±±ã¯è°·ã»ã©é »ç¹ã«ããã¹ãã§ã¯ãããŸããã å
ã»ã©ãäžæ§ãªä¹±æ°ã®éžæã¯é©åã§ã¯ãªãå Žåããããå Žåã«ãã£ãŠã¯ç°çš®ã®éžæãå¿
èŠã«ãªãããšããããŸããã ãã®åé¡ã解決ããã«ã¯ïŒ è°·ãå±±ãããé »ç¹ã«è¡šç€ºãããã©ã³ãã ãªéžæã䜿çšã§ããŸãã
for i in range(5): random.seed(i) print_chart(i, [random.randint(1, random.randint(1, 3)) for i in range(mapsize)])
ããã«ããå±±ã®æ°ã¯æžããŸãããé¢çœãçµµã¯äœæãããŸããã ãã®ãããªäžåäžãªã©ã³ãã éžæã®åé¡ã¯ã倿Žãåãã€ã³ãã§åå¥ã«çºçããããšã§ããããããã€ã³ãã§ã®ã©ã³ãã éžæãäœããã®æ¹æ³ã§é£æ¥ãã€ã³ãã§ã®ã©ã³ãã éžæã«é¢é£ããå¿
èŠããããšããããšã§ãã ããã¯äžè²«æ§ãšåŒã°ããŸãã
ãããŠãããã§ãã€ãºé¢æ°ã¯äŸ¿å©ã§ãã äžåºŠã«1ã€ã®æ°åã§ã¯ãªããäžé£ã®ä¹±æ°ãæäŸããŸãã ããã§ã¯ãã·ãŒã±ã³ã¹ãäœæããããã«1Dãã€ãºé¢æ°ãå¿
èŠã§ãã 忬¡ä¹±æ°ã®ã·ãŒã±ã³ã¹ã倿Žãããã€ãºé¢æ°ã䜿çšããŠã¿ãŸãããã ãããè¡ãã«ã¯ããŸããŸãªæ¹æ³ããããŸãããå°ãªããšã2ã€ã®é£æ¥ããçªå·ã䜿çšããŸãã åæãã€ãºã1ã5ã2ã®å Žåãæå°å€ïŒ1ã5ïŒã¯1ãæå°å€ïŒ5ã2ïŒã¯2ã§ãããããã£ãŠãæçµãã€ãºã¯1ã2ã«ãªããŸããé«ç¹ïŒ5ïŒãåé€ããããšã«æ³šæããŠãã ããã ãŸããçµæã®ãã€ãºã§ã¯ã1ã€ã®å€ãå
ã®å€ãããå°ããããšã«æ³šæããŠãã ããã ã€ãŸãã60åã®ä¹±æ°ãçæãããšãåºåã¯59åã«ãªããŸãããã®é¢æ°ãæåã®ã«ãŒãã»ããã«é©çšããŠã¿ãŸãããã
def adjacent_min(noise): output = [] for i in range(len(noise) - 1): output.append(min(noise[i], noise[i+1])) return output for i in range(5): random.seed(i) noise = [random.randint(1, 3) for i in range(mapsize)] print_chart(i, adjacent_min(noise))
以åã®ããããšæ¯èŒãããšãè°·ãäžããŸãã¯å±±ã®ãšãªã¢ãããã«ãããŸãã å±±ã¯äžã®è¿ãã«å€ãèŠãããŸãã ãŸãããã€ãºã倿Žããæ¹æ³ïŒæå°å€ãéžæïŒã®ãããã§ãè°·ã¯å±±ãããäžè¬çã§ãã æå€§å€ãååŸããå Žåãç»åã¯éã«ãªããŸãã è°·ãå±±ãé »ç¹ã«ããããªãå Žåãæå°å€ãŸãã¯æå€§å€ã®ä»£ããã«å¹³åå€ãéžæããŸãã
ããã§ãå
¥åã§ãã€ãºãåãåããããæ»ãããªæ°ãããã€ãºãäœæãããã€ãºä¿®æ£æé ãã§ããŸããã
ãããŠãããäžåºŠå®è¡ããŠã¿ãŸãããïŒ
def adjacent_min(noise):
çŸåšããããã¯ããã«æ»ããã«ãªããå±±ã¯ããã«å°ãªããªã£ãŠããŸãã å±±ã¯ããŸãé »ç¹ã«äžã«çŸããªãã®ã§ãç§ãã¡ã¯ããŸãã«ãæ»ããã«ãããšæããŸãã ãããã£ãŠããã®äŸã§ã¯ãã¹ã ãŒãžã³ã°ã®ã¬ãã«ã1ã€æ»ãããšããå§ãããŸãã
ããã¯æç¶ãåçæã®æšæºããã»ã¹ã§ããäœãã詊ããŠã¿ãŠãèŠæ ããè¯ããã©ããã確èªããããã§ãªãå Žåã¯æ»ã£ãŠå¥ã®ããšã詊ããŠãã ããã
泚ïŒä¿¡å·åŠçã®ã¢ã³ããšã€ãªã¢ã¹ã¯ã
ããŒãã¹ãã£ã«ã¿ãŒãšåŒã°ã
ãŸã ã äžèŠãªãã€ãºãé€å»ããããã«äœ¿çšãããå ŽåããããŸãã
èŠçŽãããšïŒ
- ãã€ãºã¯äžé£ã®ä¹±æ°ã§ãéåžžã¯ã©ã€ã³ãŸãã¯ã°ãªããã«äžŠãã§ããŸãã
- ããã·ãŒãžã£çæã§ã¯ãå€ãã®å Žåããã€ãºã远å ããŠããªãšãŒã·ã§ã³ãäœæããå¿
èŠããããŸãã
- ä¹±æ°ãåçŽã«éžæãããšïŒåçš®ãç°çš®ããåããïŒãåæ°å€ãåšå²ã«é¢ä¿ããªããã€ãºãçºçããŸãã
- å€ãã®å Žåãç¹å®ã®ç¹æ§ãåãããã€ãºãå¿
èŠã§ããããšãã°ãå±±ãäžã«è¿ã¥ãããªã©ã§ãã
- ãã€ãºãçºçãããæ¹æ³ã¯ãããããããŸãã
- ãã€ãºé¢æ°ã«ã¯ããã€ãºãçŽæ¥äœæãããã®ãšãæ¢åã®ãã€ãºãååŸããŠä¿®æ£ãããã®ããããŸãã
ãã€ãºé¢æ°ã®éžæã¯ãå€ãã®å Žå詊è¡é¯èª€ããã»ã¹ã§ãã ãã€ãºã®æ¬è³ªãšãã®ä¿®æ£æ¹æ³ãçè§£ããããšã§ãããæå³ã®ããéžæãããããšãã§ããŸãã
3.é³ãç«ãŠã
åã®ã»ã¯ã·ã§ã³ã§ã¯ãåºåãšããŠä¹±æ°ã䜿çšããŠãã€ãºãéžæããããããå¹³æ»åããŸããã ããã¯æšæºãã¿ãŒã³ã§ãã
ãã©ã¡ãŒã¿ãšããŠä¹±æ°ã䜿çšãããã€ãºé¢æ°ããå§ã
ãŸã ã ä¹±æ°ãå®ã®äœçœ®ãéžæãããšãã«äœ¿çšããæ¬¡ã«ä¹±æ°ãè°·/äž/å±±ãéžæããå¥ã®å Žæã䜿çšããŸããã æ¢åã®ãã€ãºã倿ŽããŠãèŠä»¶ã«å¿ããŠãã®åœ¢ç¶ã倿Žã§ããŸãã è°·/äž/å±±ã®ãã€ãºé¢æ°ãå¹³æ»åããŠä¿®æ£ããŸããã ãã€ãºé¢æ°ã倿Žããã«ã¯ããŸããŸãªæ¹æ³ããããŸãã
åçŽãª1D / 2Dãã€ãºãžã§ãã¬ãŒã¿ãŒã®äŸïŒ
- åºåã«ä¹±æ°ãçŽæ¥äœ¿çšããŸãã ã ããç§ãã¡ã¯è°·/äž/å±±ã®ããã«ãã£ãã
- åºåã«äœ¿çšãããæ£åŒŠããã³äœåŒŠã®ãã©ã¡ãŒã¿ãŒãšããŠä¹±æ°ã䜿çšããŸãã
- åºåã«äœ¿çšãããã°ã©ããŒã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒãšããŠä¹±æ°ã䜿çšããŸãã ãã®ååã¯ãPerlinã®ãã€ãºã§äœ¿çšãããŸãã
ãã€ãºãä¿®æ£ããäžè¬çãªæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- ãã£ã«ã¿ãé©çšããŠãç¹å®ã®ç¹æ§ãäœæžãŸãã¯åŒ·åããŸãã è°·/äž/å±±ã«ã€ããŠã¯ãã¹ã ãŒãžã³ã°ã䜿çšããŠãžã£ã³ããæžãããè°·ã®é¢ç©ãå¢ãããäžã®è¿ãã«å±±ãäœæããŸããã
- æçµçµæã«å¯Ÿããåãã€ãºé¢æ°ã®å¹æãå¶åŸ¡ã§ããããã«ãéåžžã¯å éåã§ãè€æ°ã®ãã€ãºé¢æ°ãåæã«è¿œå ããŸãã
- ãã€ãºé¢æ°ã«ãã£ãŠååŸããããã€ãºå€ã®éãè£éããŠãå¹³æ»åãããé åãçæããŸãã
é³
ãç«ãŠã
æ¹æ³ã¯
ãããããããŸã ïŒ
ããçšåºŠããã€ãºãã©ã®ããã«çæããããã¯é¢ä¿ãããŸããã ããã¯è峿·±ãã§ãããã²ãŒã ã§äœ¿çšããå Žåã¯ã次ã®2ã€ã®åŽé¢ã«æ³šç®ããå¿
èŠããããŸãã
- ã©ã®ããã«ãã€ãºã䜿çšããŸããïŒ
- ããããã®å Žåããã€ãºé¢æ°ããã©ã®ãããªããããã£ãå¿
èŠã§ããïŒ
4.ãã€ãºã®äœ¿ç𿹿³
ãã€ãºé¢æ°ã䜿çšããæãç°¡åãªæ¹æ³ã¯ãé«ããšããŠçŽæ¥äœ¿çšããããšã§ãã äžèšã®äŸã§ã¯ããããã®åãã€ã³ãã§
random(1,3)
ãåŒã³åºããŠãè°·/äž/å±±ãçæããŸããã ãã€ãºå€ã¯ãé«ããšããŠçŽæ¥äœ¿çšãããŸãã
äžç¹å€äœãã€ãºãŸãã¯ããŒãªã³ãã€ãºã®äœ¿çšããçŽæ¥äœ¿çšã®äŸã§ãã
ãã€ãºã䜿çšããå¥ã®æ¹æ³ã¯ãåã®å€ããã®ãªãã»ãããšããŠäœ¿çšããããšã§ãã ããšãã°ããã€ãºé¢æ°ã
[2, -1, 5]
è¿ãå Žåãæåã®äœçœ®ã¯2ã2çªç®ã¯2 + -1 = 1ã3çªç®ã¯1 + 5 = 6ã§ãããšæ³å®ã§ããŸãã
ãã©ã³ãã ãŠã©ãŒã¯ããåç
§ããŠãã ããã ã å察ã®ããšãè¡ãããã€ãºå€ã®å·®ã䜿çšã§ããŸãã ããã¯ããã€ãºé¢æ°ã®ä¿®æ£ãšèããããšãã§ããŸãã
ãã€ãºã䜿çšããŠé«ããèšå®ãã代ããã«ããªãŒãã£ãªã«äœ¿çšã§ããŸãã
ãŸãã¯ãã©ãŒã ãäœæããŸãã ããšãã°ã極座æšã®ã°ã©ãã®ååŸãšããŠãã€ãºã䜿çšã§ããŸãã åºåãé«ãã§ã¯ãªãååŸãšããŠäœ¿çšããŠã
ãã®ãããª1Dãã€ãºé¢æ°ã極圢åŒã«å€æã§ããŸãã åã颿°ã極圢åŒã§ã©ã®ããã«èŠãããã瀺ããŠããŸãã
ãŸãã¯ããã€ãºãã°ã©ãã£ãã¯ãã¯ã¹ãã£ãšããŠäœ¿çšã§ããŸãã ãã®ç®çã®ããã«ãPerlinãã€ãºããã䜿çšãããŸãã
ãã€ãºãé©çšããŠãæšãéé±ãç«å±±ãå°éã®äºè£ãªã©ã®ãªããžã§ã¯ãã®å Žæãéžæã§ããŸãã äžèšã®äŸã§ã¯ãå®ç®±ã®å Žæãéžæããããã«ä¹±æ°ã䜿çšããŸããã
ãã€ãºã
ãããå€é¢æ°ãšããŠäœ¿çšããããšãã§ããŸãã ããšãã°ãå€ã3ãè¶
ãããšãã€ã§ã1ã€ã®ã€ãã³ããçºçãããã以å€ã®å Žåã¯äœããçºçãããšæ³å®ã§ããŸãã ãã®äžäŸã¯ãPerlinã®3Dãã€ãºã䜿çšããŠæŽçªãçæããããšã§ãã ãã¹ãŠãç¹å®ã®å¯åºŠã®ãããå€ãè¶
ããŠããããã®ãããå€ãäžåããã¹ãŠãå±å€ïŒæŽçªïŒã§ãããšæ³å®ã§ããŸãã
ããªãŽã³ããããžã§ãã¬ãŒã¿ãŒã§ã¯ãããŸããŸãªæ¹æ³ã§ãã€ãºã䜿çšããŸãããããã€ãºãçŽæ¥äœ¿çšããŠé«ããæ±ºå®ããæ¹æ³ã¯ãããŸããã§ããã
- æ£æ¹åœ¢ãŸãã¯å
è§åœ¢ã®ã°ãªããã䜿çšãããšãã°ã©ãæ§é ãæãç°¡åã«ãªããŸãïŒå®éãå
è§åœ¢ã®ã°ãªããããå§ããŸããïŒã åã¡ãã·ã¥èŠçŽ ã¯ããªãŽã³ã§ãã ã°ãªããã«ã©ã³ãã æ§ã远å ãããã£ãã ããã¯ããã€ã³ããã©ã³ãã ã«ç§»åããããšã§å®è¡ã§ããŸãã ãããããã£ãšã©ã³ãã ãªãã®ãå¿
èŠã§ããã ãã«ãŒãã€ãºãžã§ãã¬ãŒã¿ãŒã䜿çšããŠããªãŽã³ãé
眮ãããããã€å³ã䜿çšããŠåæ§æããŸããã ãã£ãšæéãããããŸããã幞ããªããšã«ãç§ã®ããã«ãã¹ãŠãããŠãããã©ã€ãã©ãªïŒ
as3delaunay
ïŒããããŸããã ããããç§ã¯ã°ãªããããå§ããŸããããããã¯ã¯ããã«ç°¡åã§ããããããããããªãããå§ããããšããå§ãããŸãã - 海岞ç·ã¯ãåå°ãæ°Žããåé¢ããæ¹æ³ã§ãã ãã®ãã€ãºã䜿çšããŠ2ã€ã®ç°ãªãæ¹æ³ã§çæããŸãããããã¶ã€ããŒã«åœ¢ç¶ãèªåã§æãããã«äŸé Œããããšãã§ããæ£æ¹åœ¢ãšå圢ã®åœ¢ç¶ã䜿çšããŠãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŸããã æµ·å²žç·ã®æŸå°ç¶ã®åœ¢ç¶ã¯ããµã€ã³ãšã³ãµã€ã³ã䜿çšãããã€ãºé¢æ°ã§ãããæ¥µåœ¢åŒã§ã¬ã³ããªã³ã°ããŸãã ããŒãªã³ã®æµ·å²žç·åœ¢ç¶ã¯ãããŒãªã³ãã€ãºãšæŸå°ç¶ã®ãªã¿ãŒã³ããããå€ãšããŠäœ¿çšãããã€ãºãžã§ãã¬ãŒã¿ãŒã§ãã ããã§ã¯ãä»»æã®æ°ã®ãã€ãºé¢æ°ã䜿çšã§ããŸãã
- å·ã®æ°Žæºã¯ã©ã³ãã ã«é
眮ãããŠããŸãã
- ããªãŽã³éã®å¢çã¯ãçŽç·ãããã€ãºã®å€ãç·ã«å€ãããŸãã ããã¯äžç¹ã®å€äœã«äŒŒãŠããŸãããããªãŽã³ã®å¢çå
ã«åãŸãããã«ã¹ã±ãŒãªã³ã°ããŸããã ããã¯çŽç²ã«ã°ã©ãã£ãã¯å¹æãªã®ã§ãã³ãŒãã¯åºæ¬çãªã¢ã«ãŽãªãºã ïŒ
Map.as
ïŒã§ã¯ãªãGUIïŒ mapgen.as
ïŒã«ãããŸãã
ã»ãšãã©ã®ããã¥ã¢ã«ã¯ãã€ãºãããªãç°¡åã«äœ¿çšããŠããŸãããããã䜿çšããæ¹æ³ã¯ä»ã«ã
ãããããããŸãã
5.ãã€ãºåšæ³¢æ°
é »åºŠã¯ãç§ãã¡ãèå³ãæã£ãŠããæãéèŠãªç¹æ§ã§ãã ãããçè§£ããæãç°¡åãªæ¹æ³ã¯ãæ£åŒŠæ³¢ãèŠãããšã§ãã ããã¯ãå¹³ååšæ³¢æ°ã®æ£åŒŠæ³¢ã«ãªã£ãåŸã®äœåšæ³¢æ°ã®æ£åŒŠæ³¢ã§ãããæåŸã«é«åšæ³¢æ°ã®æ£åŒŠæ³¢ããããŸãã
print_chart(0, [math.sin(i*0.293) for i in range(mapsize)])
print_chart(0, [math.sin(i*0.511) for i in range(mapsize)])
print_chart(0, [math.sin(i*1.57) for i in range(mapsize)])
ã芧ã®ããã«ãäœåšæ³¢æ°ã¯åºãäžãäœæããé«åšæ³¢æ°ã¯çãäžãäœæããŸãã
é »åºŠã¯ãã°ã©ãã®æ°Žå¹³ãµã€ãºã衚ããŸãã
æ¯å¹
ã¯åçŽãµã€ãºã衚ããŸãã å
ã»ã©ãè°·/äž/å±±ã®å°å³ããã©ã³ãã ããããããã«èŠããè°·ãŸãã¯å±±ã®ããåºãé åãäœæããããšèšã£ãããšãæãåºããŠãã ããã å®éã
äœé »åºŠã®å€åãå¿
èŠã§ããã
ããšãã°ããã€ãºãçºçããã
sin
ãªã©ã®é£ç¶é¢æ°ãããå Žåãåšæ³¢æ°ãäžããããšã¯ã
å
¥åããŒã¿ã«äœããã®ä¿æ°ãæããããšãæå³ã
ãŸã sin(2*x)
ã¯ãåšæ³¢æ°
sin(x)
ã2åã«ããŸãã æ¯å¹
ã倧ãããããšããããšã¯ã
åºåã«ä¿æ°ãæããããšãæå³ã
ãŸã 2*sin(x)
ã¯ã
sin(x)
æ¯å¹
ã2åã«ããŸãã äžèšã®ã³ãŒãã¯ãå
¥åã«ç°ãªãæ°ãæããããšã§åšæ³¢æ°ã倿Žããããšã瀺ããŠããŸãã æ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ãè€æ°ã®æ£åŒŠæ³¢ãåèšãããšãã«æ¯å¹
ã䜿çšããŸãã
äžèšã¯ãã¹ãŠ1Dã«é©çšãããŸããã2Dã§ãåãããšãèµ·ãããŸãã
ãã®ããŒãžã®å³1ã
ã芧ãã ãã ã é·æ³¢é·ïŒäœåšæ³¢æ°ïŒãšçæ³¢é·ïŒé«åšæ³¢æ°ïŒã®2Dãã€ãºã®äŸããããŸãããåšæ³¢æ°ãé«ããªããšåã
ã®ãã©ã°ã¡ã³ããå°ãããªãããšã«æ³šæããŠãã ããã
ãã€ãºé¢æ°ã®åšæ³¢æ°ãæ³¢é·ããŸãã¯ãªã¯ã¿ãŒãã«ã€ããŠè©±ããšããæ£åŒŠæ³¢ã䜿çšãããŠããªããŠããããã¯ãŸãã«æå³ãããŠããŸãã
æ£åŒŠæ³¢ãšããã°ãå¥åŠãªæ¹æ³ã§ããããçµã¿åãããããšã§é¢çœãããšãããããšãã§ããŸãã ããšãã°ãå·Šãäœåšæ³¢æ°ãå³ãé«åšæ³¢æ°ã§ãã
print_chart(0, [math.sin(0.2 + (i * 0.08) * math.cos(0.4 + i*0.3)) for i in range(mapsize)])
éåžžãåæã«å€ãã®åšæ³¢æ°ãæã€ããšã«ãªããå¿
èŠãªåšæ³¢æ°ãéžæããããšã«é¢ããŠèª°ãæ£ããçããäžããŸããã èªåããŠãã ããïŒã©ã®åšæ³¢æ°ãå¿
èŠã§ããïŒ ãã¡ãããçãã¯ãããã®äœ¿ç𿹿³ã«ãã£ãŠç°ãªããŸãã
6.ãã€ãºã®è²
ãã€ãºã®ãè²ãã«ãã£ãŠãå«ãŸããåšæ³¢æ°ã®çš®é¡ã決ãŸããŸãã
ãã¹ãŠã®åšæ³¢æ°ãçãã
ãã¯ã€ããã€ãºã«åœ±é¿ã
ãŸã ã è°·ãäžãå±±ãæå®ããããã«1ã2ã3ããéžæãããšãã«ããã§ã«ãã¯ã€ããã€ãºã䜿çšããŸããã 8ã€ã®ãã¯ã€ããã€ãºã·ãŒã±ã³ã¹ã次ã«ç€ºããŸãã
for i in range(8): random.seed(i) print_chart(i, [random.uniform(-1, +1) for i in range(mapsize)])
ã¬ãããã€ãº ïŒãã©ãŠã³
ãã€ãºãšãåŒã°ããŸãïŒã§ã¯ã
äœåšæ³¢æ°ãããé¡èã«ãªããŸãïŒæ¯å¹
ã倧ãããªããŸãïŒã ããã¯ãåºåã®äžãšè°·ãé·ããªãããšãæå³ããŸãã ã¬ãããã€ãºã¯ã飿¥ãããã¯ã€ããã€ãºå€ãå¹³åããããšã§çæã§ããŸãã ãã¯ã€ããã€ãºã®åã8ã€ã®äŸããããŸãããå¹³ååããã»ã¹ãè¡ãããŸãã
def smoother(noise): output = [] for i in range(len(noise) - 1): output.append(0.5 * (noise[i] + noise[i+1])) return output for i in range(8): random.seed(i) noise = [random.uniform(-1, +1) for i in range(mapsize)] print_chart(i, smoother(noise))
ãããã®8ã€ã®äŸã®ãããããããèŠããšã察å¿ãããã¯ã€ããã€ãºãããæ»ããã§ããããšãããããŸãã 倧ããªå€ãŸãã¯å°ããªå€ã®ééã¯é·ããªããŸãã
ãã³ã¯ãã€ãºã¯çœãšèµ€ã®éã§ãã
èªç¶çã§ãã°ãã°çºçããéåžžã颚æ¯ã«é©ããŠããŸãã倧ããªäžãšè°·ã«å ããŠãå°ããªé¢šæ¯ã®èµ·äŒããããŸããã¹ãã¯ãã«ã®å察åŽã«ã¯ããŒãã«ãã€ãºããããŸããããããå¯èŠã§é«é »åºŠãããŒãã«ãã€ãºã¯ã飿¥ãããã¯ã€ããã€ãºå€ã®å·®ãåãããšã§çæã§ããŸãã以äžã«ãæžç®åŠçã®å¯Ÿè±¡ãšãªããã¯ã€ããã€ãºã®åã8ã€ã®äŸã瀺ããŸãã def rougher(noise): output = [] for i in range(len(noise) - 1): output.append(0.5 * (noise[i] - noise[i+1])) return output for i in range(8): random.seed(i) noise = [random.uniform(-1, +1) for i in range(mapsize)] print_chart(i, rougher(noise))
8ã€ã®äŸã®ãããããããèŠããšã察å¿ãããã¯ã€ããã€ãºãããç²ãããšãããããŸãã倧ããª/å°ããªå€ã®é·ãééãçããããªãšãŒã·ã§ã³ãçãããã«ãŒãã€ãºã¯çŽ«ãšçœã®éã§ããå€ãã®å Žåããªããžã§ã¯ãã®é
眮ã«é©ããŠããŸããå¯åºŠãé«ããããå¯åºŠãäœããããã©ã³ãã¹ã±ãŒãå
šäœã«ã»ãŒåäžã«ååžããŠããŸããç§ãã¡ã®ç®ã®äžã®ããããšã³ãŒã³ã®äœçœ®ã«ã¯ããã«ãŒãã€ãºã®ç¹æ§ããããŸãããã«ãŒãã€ãºã¯ãè¡ã®çŽ æŽãããæ¯è²ã«ãé©ããŠããŸãããŠã£ãããã£ã¢ã«ã¯ãããŸããŸãªè²ã®ãã€ãºãèãããšãã§ããããŒãžããããŸããçœãèµ€ã玫ã®ãã€ãºãçæããæ¹æ³ãåŠã³ãŸãããããããç§ãã¡ã«ãšã£ãŠæã䟿å©ãªãã€ãºæ©èœã¯ãçœããã³ã¯ãéã§ããåŸã§ãã³ã¯ãšãã«ãŒã®ãã€ãºãçæããããšããŸããèŠçŽãããšïŒ- åšæ³¢æ°ã¯ãæ£åŒŠæ³¢ãªã©ã®ç¹°ãè¿ãä¿¡å·ã®ããããã£ã§ããããã€ãºã«äœ¿çšã§ããŸãã
- ãã¯ã€ããã€ãºãæãç°¡åã§ãããã¹ãŠã®åšæ³¢æ°ãå«ãŸããŠããŸãããããã¯äžæ§ã«éžæå¯èœãªä¹±æ°ã§ãã
- èµ€ããã³ã¯ãéã玫ã¯ãæç¶ãåçæã«äœ¿çšã§ããä»ã®ãã€ãºè²ã§ãã
- ãã¯ã€ããã€ãºã¯èµ€ã®å¹³ååã«å€æã§ããŸãã
- ãã¯ã€ããã€ãºã¯ãæžç®ã«ãã玫è²ã«å€ãããŸãã
7.åšæ³¢æ°ã®çµã¿åãã
åã®ã»ã¯ã·ã§ã³ã§ã¯ããã€ãºã®ãåšæ³¢æ°ããšãã€ãºã®ããŸããŸãªãè²ãã調ã¹ãŸããããã¯ã€ããã€ãºã¯ããã¹ãŠã®åšæ³¢æ°ãååšããããšãæå³ããŸãããã³ã¯ãšèµ€ã®ãã€ãºã§ã¯ãäœåšæ³¢æ°ã¯é«åšæ³¢æ°ããã匷ããªããŸããéãšçŽ«ã§ã¯ãé«åšæ³¢æ°ã¯äœåšæ³¢æ°ããã匷ããªããŸããé©åãªåšæ³¢æ°å¿çã§ãã€ãºãçæãã1ã€ã®æ¹æ³ã¯ãç¹å®ã®åšæ³¢æ°ã§ãã€ãºãçæããæ¹æ³ãèŠã€ããããããçµåããããšã§ããããšãã°noise
ãç¹å®ã®åšæ³¢æ°ã§ãã€ãºãçæãããã€ãºé¢æ°ããããšããŸãfreq
ãæ¬¡ã«ã1000 Hzã®åšæ³¢æ°ã2000 Hzã®åšæ³¢æ°ã®2åã«ãããå Žåãä»ã®åšæ³¢æ°ãååšããªãå Žåã¯ãã䜿çšã§ããŸãnoise(1000) + 0.5 * noise(2000)
ãç§ã¯ä»ãããèªããªããã°ãªããŸããsine
ããªãããããããã«èŠããŸãããåšæ³¢æ°ãæå®ããã®ã¯ç°¡åã§ãã®ã§ãããããå§ããŠãã©ããŸã§è¡ãããèŠãŠã¿ãŸãããã def noise(freq): phase = random.uniform(0, 2*math.pi) return [math.sin(2*math.pi * freq*x/mapsize + phase) for x in range(mapsize)] for i in range(3): random.seed(i) print_chart(i, noise(1))
以äžã§ããåºæ¬çãªå»ºç©ã®ã¬ã³ã¬ã¯æ£åŒŠæ³¢ã§ãã©ã³ãã ãªå€ïŒäœçžãšåŒã°ããïŒã ãæšªã«ã·ããããŸããããã§ã®å¯äžã®äºæ
ã¯ãã©ãã ãç§ãã¡ãããã远æŸãããã§ããããã€ãã®ãã€ãºé¢æ°ãçµã¿åãããŠã¿ãŸããããåšæ³¢æ°1ã2ã4ã8ã16ã32ã®8ã€ã®ãã€ãºé¢æ°ãçµã¿åããããïŒãã€ãºé¢æ°ã«ãã£ãŠã¯ã2ã®çޝä¹ã¯ãªã¯ã¿ãŒããšåŒã°ããïŒããããã®åãã€ãºé¢æ°ã«ç¹å®ã®ä¿æ°ãæããŠïŒé
åãåç
§amplitudes
ïŒãããããåèšããŸããå éåèšãèšç®ããæ¹æ³ãå¿
èŠã§ãã def weighted_sum(amplitudes, noises): output = [0.0] * mapsize
ããã§ã颿°noise
ãšæ°ãã颿°ã䜿çšã§ããŸãweighted_sum
ïŒ amplitudes = [0.2, 0.5, 1.0, 0.7, 0.5, 0.4] frequencies = [1, 2, 4, 8, 16, 32] for i in range(10): random.seed(i) noises = [noise(f) for f in frequencies] sum_of_noises = weighted_sum(amplitudes, noises) print_chart(i, sum_of_noises)
ãã€ãºããŸã£ãããªãããã«èŠããæ£åŒŠæ³¢ããå§ããŸãããããããã®çµã¿åããã¯ããªããã€ãºãå€ãããã«èŠããŸãããããŠã[1.0, 0.7, 0.5, 0.3, 0.2, 0.1]
ã¹ã±ãŒã«ãšããŠäœ¿çšããå Žåã¯ïŒéåžžã«å€ãã®äœåšæ³¢æ°ã䜿çšãããé«åšæ³¢æ°ã¯ãŸã£ãããããŸããïŒ
éã¿ãšããŠäœ¿çšããå Žåã¯ã©ããªããŸã[0.1, 0.1, 0.2, 0.3, 0.5, 1.0]
ãïŒäœåšæ³¢æ°ã¯éåžžã«è»œããé«åšæ³¢æ°ã§ã¯ããã«å€§ãããªããŸãã
ããã§è¡ã£ãã®ã¯ãç°ãªãåšæ³¢æ°ã§ã®ãã€ãºé¢æ°ã®éã¿ä»ãåèšã§ãããããã¯15è¡æªæºã®ã³ãŒãã§æžã¿ãŸãããããŸããŸãªãã€ãºã¹ã¿ã€ã«ãçæã§ããŸããèŠçŽãããšïŒ- ä¹±æ°ã®é
åãéžæãã代ããã«ãåäžã®ä¹±æ°ãéžæããããã䜿çšããŠæ£åŒŠæ³¢ãå·ŠãŸãã¯å³ã«ã·ããããŸãã
- ç°ãªãåšæ³¢æ°ãæã€ä»ã®ãã€ãºé¢æ°ã®å éåãåãããšã«ããããã€ãºãäœæã§ããŸãã
- å éåèšã®éã¿ãéžæããããšã«ããããã€ãºç¹æ§ãéžæã§ããŸãã
8.ã¬ã€ã³ããŒãžã§ãã¬ãŒã·ã§ã³
ç°ãªãåšæ³¢æ°ã§ãã€ãºãæ··åããŠãã€ãºãçæã§ããããã«ãªã£ãã®ã§ããã€ãºã®è²ãããäžåºŠèŠãŠã¿ãŸãããããã€ãºã«ã©ãŒã«é¢ãããŠã£ãããã£ã¢ã®ããŒãžã«æ»ããŸããããåšæ³¢æ°ã¹ãã¯ãã«ãããã«ç€ºãããŠããããšã«æ³šæããŠãã ããã圌ã¯ãã€ãºã«ååšããååšæ³¢æ°ã®æ¯å¹
ã«ã€ããŠæããŠãããŸãããã¯ã€ããã€ãº-ãã©ããããã³ã¯ãèµ€ãäžã«åŸããéã玫ãäžãããŸããåšæ³¢æ°ã¹ãã¯ãã«ã¯ãæã
ã®é
åãšçžé¢ããŠãããšãåã®ã»ã¯ã·ã§ã³ãããfrequencies
amplitudes
以åã¯ã2ã®ã¹ãä¹ã§ããåšæ³¢æ°ã䜿çšããŠããŸãããããŸããŸãªã¿ã€ãã®ã«ã©ãŒãã€ãºã«ã¯ããå€ãã®åšæ³¢æ°ãããããããã倧ããªé
åãå¿
èŠã§ãããã®ã³ãŒãã§ã¯ã2ã®ã¹ãä¹ïŒ1ã2ã4ã8ã16ã32ïŒã®ä»£ããã«ã1ãã30ãŸã§ã®ãã¹ãŠã®æŽæ°åšæ³¢æ°ã䜿çšããŸããæ¯å¹
ãæåã§æžã蟌ã代ããamplitude(f)
ã«ãç¹å®ã®åšæ³¢æ°ã®æ¯å¹
ãè¿ãããããã®ããŒã¿ããé
åãäœæãã颿°ãèšè¿°ããŸãamplitudes
ãåã³é¢æ°weighted_sum
ãšã䜿çšã§ããŸãnoise
ããå°ããªåšæ³¢æ°ã®ã»ããã®ä»£ããã«ãããé·ãé
åã«ãªããŸãïŒ frequencies = range(1, 31)
ãã®ã³ãŒãã§ã¯ã颿°amplitude
ã¯ãã©ãŒã ãå®çŸ©ããŸããåžžã«1ãè¿ãããå Žåããã¯ã€ããã€ãºãçºçããŠããŸããä»ã®è²ã®ãã€ãºãçæããæ¹æ³ã¯ïŒåãã©ã³ãã ã·ãŒãã䜿çšããŸãããç°ãªãæ¯å¹
颿°ã䜿çšããŸãã8.1ã ã¬ãããã€ãº
random_ift(5, lambda f: 1/f/f)
8.2ã ãã³ã¯ãã€ãº
random_ift(5, lambda f: 1/f)
8.3ããã¯ã€ããã€ãº
random_ift(5, lambda f: 1)
8.4ããã«ãŒãã€ãº
random_ift(5, lambda f: f)
8.5ãããŒãã«ãã€ãº
random_ift(5, lambda f: f*f)
8.6ããã€ãºè²
ãããã£ãŠãããã¯éåžžã«äŸ¿å©ã§ããåçŽãªåœ¢ç¶ãåŸãããã«ãæ¯å¹
颿°ã®ææ°ã倿Žã§ããŸãã- ã¬ãããã€ãºã¯f ^ -2
- ãã³ã¯ãã€ãºã¯f ^ -1
- ãã¯ã€ããã€ãºã¯f ^ 0
- ãã«ãŒãã€ãºã¯f ^ + 1
- ããŒãã«ãã€ãºã¯f ^ + 2
[å
ã®èšäº] ã®ææ°ã倿ŽããŠãã»ã¯ã·ã§ã³8.1ã8.5ã®ãã€ãºã1ã€ã®åºæ¬é¢æ°ããã©ã®ããã«çæããããã確èªããŠãã ãããèŠçŽãããšïŒ- ãã€ãºã¯ãç°ãªãåšæ³¢æ°ã®æ£åŒŠæ³¢ã®å éåã«ãã£ãŠçæãããå¯èœæ§ããããŸãã
- ç°ãªãè²ã®ãã€ãºã«ã¯ã颿°f ^ cã«å¯Ÿå¿ããéã¿ïŒæ¯å¹
ïŒããããŸãã
- ææ°ã倿Žããããšã«ããã1çµã®ä¹±æ°ããç°ãªãè²ã®ãã€ãºãååŸã§ããŸãã
9.ãã®ä»ã®åœ¢æ
ã®ãã€ãº
ç°ãªãè²ã®ãã€ãºãçæããããã«ãç°ãªãææ°ãæã€åçŽãªã¹ã颿°ã«åŸãããã«æ¯å¹
ã匷å¶ããŸããããããããããã®åœ¢åŒã ãã«éå®ãããŸãããããã¯ã察æ°ãã£ãŒãäžã«çŽç·ã§è¡šç€ºãããæãåçŽãªãã¿ãŒã³ã§ãããããããç§ãã¡ã®ããŒãºã«åã£ãè峿·±ããã¿ãŒã³ãäœæããä»ã®åšæ³¢æ°ã®ã»ããããããŸããåäžã®é¢æ°ã䜿çšãã代ããã«ãæ¯å¹
ã®é
åã䜿çšããå¿
èŠã«å¿ããŠèª¿æŽã§ããŸããæ¢çŽ¢ãã䟡å€ã¯ãããŸãããç§ã¯ãŸã ãã£ãŠããŸãããåã®ã»ã¯ã·ã§ã³ã§è¡ã£ãããšã¯ãããŒãªãšçŽæ°ãšããŠèªèã§ããŸããäž»ãªèãæ¹ã¯ãä»»æã®é£ç¶é¢æ°ãæ£åŒŠæ³¢ãšäœåŒŠã®å éåãšããŠè¡šãããšãã§ãããšããããšã§ããéžæããéã¿ã«å¿ããŠãæçµçãªé¢æ°ã®å€èгãå€ãããŸããããŒãªãšå€æã¯ãå
ã®é¢æ°ããã®åšæ³¢æ°ã«æ¥ç¶ããŸããéåžžããœãŒã¹ããŒã¿ããéå§ãããããããåšæ³¢æ°/æ¯å¹
ãååŸããŸããããã¯ããã€ãºã®ãã¹ãã¯ãã«ãã瀺ã鳿¥œãã¬ãŒã€ãŒã§èŠãããšãã§ããŸããçŽæ¥æç€ºã«ãããããŒã¿ãåæããé »åºŠãååŸã§ããŸããéæ¹åã§ã¯ãåšæ³¢æ°ããããŒã¿ãåæã§ããŸãããã€ãºã§ã¯ãéåžžåæãè¡ããŸããå®éããã§ã«ãããè¡ã£ãŠããŸããåã®ã»ã¯ã·ã§ã³ã§ã¯ãåšæ³¢æ°ãšæ¯å¹
ãéžæãããã€ãºãçæããŸãããããŒãªãšå€æã«ã¯å€ãã®çšéããããŸãããªã³ãã®ããŒãžããŒãªãšå€æã®ä»çµã¿ã®èª¬æããããŸãããã®ããŒãžã®å³ã¯ã€ã³ã¿ã©ã¯ãã£ãã§ã-ååšæ³¢æ°ã®åŒ·ããå
¥åã§ããããŒãžã¯ããããã©ã®ããã«çµåãããã瀺ããŸããæ£åŒŠæ³¢ãçµã¿åãããããšã«ãããå€ãã®è峿·±ã圢ç¶ãåŸãããšãã§ããŸããããšãã°ãããã¯ã¹ã«Cycles inputãšå
¥åã0 -1 0.5 -0.3 0.25 -0.2 0.16 -0.14
ãPartsãã§ãã¯ããã¯ã¹ããªãã«ããŠã¿ãŠãã ããã確ãã«ãå±±ã®ããã«èŠããŸããïŒãã®ããŒãžã®ä»é²ïŒä»é²ïŒã«ã¯ãæ£åŒŠæ³¢ã極座æšã§ã©ã®ããã«èŠãããã瀺ãããŒãžã§ã³ããããŸããããŒãªãšå€æã䜿çšããŠããããçæããäŸã«ã€ããŠã¯ãåšæ³¢æ°åæã«ããã©ã³ãã¹ã±ãŒãã®çæææ³ãåç
§ããŠãã ãããPaul Bourkeã¯ãæåã«2次å
ã®ãã¯ã€ããã€ãºãçæããæ¬¡ã«ããŒãªãšå€æã䜿çšããŠåšæ³¢æ°ã«å€æãããã³ã¯ãã€ãºã®åœ¢ç¶ãäžããéããŒãªãšå€æã䜿çšããŠå
ã«æ»ããŸãã2Då®éšã®ç§ã®å°ããªçµéšã¯ããã®äžã®ãã¹ãŠã1Dã»ã©åçŽã§ã¯ãªãããšã瀺ããŠããŸããæªå®æã®å®éšãã芧ã«ãªãããå Žåã¯ããã®ããŒãžã®æåŸãŸã§ã¹ã¯ããŒã«ããŠãã¹ã©ã€ããŒãåãããŠãã ããã10.ãã®ä»ã®ãã€ãºé¢æ°
ãã®èšäºã§ã¯ãæ£åŒŠæ³¢ã䜿çšããŠãã€ãºãçæããŸããã ãšãŠãç°¡åã§ãã
ããã€ãã®é¢æ°ãåããããããèŠçŽããŸããå
ã®é¢æ°ããã€ãºãå«ãã§ããªãããã«èŠããŠããç¹ã«15è¡ã®ã³ãŒãããèšè¿°ããŠããªãããšãèãããšãçµæã¯ååã«èŠããŸããç§ã¯ä»ã®ãã€ãºé¢æ°ã詳现ã«ç ç©¶ããŠããŸããããç§ã®ãããžã§ã¯ãã§ãããã䜿çšããŠããŸãããããã®å€ãã¯ãã³ã¯ãã€ãºãçæãããšæããŸãïŒ- äžç¹å€äœã§ã¯ãæ£åŒŠæ³¢ã®ä»£ããã«ã®ãããæ³¢ä¿¡å·ã䜿çšãããæ¯å¹
ã倧ãããªãåšæ³¢æ°ãšé«ããªãåšæ³¢æ°ãåèšãããŸãããã³ã¯ãã€ãºã«å€ãããšæããŸãããã®çµæãã®ãããæ³¢ä¿¡å·ïŒæ£åŒŠæ³¢ã»ã©æ»ããã§ã¯ãªãïŒããŸãã¯2ã®ã¹ãä¹ã§ããåšæ³¢æ°ã®ã¿ã®äœ¿çšã«ããçããé¡èãªé¡ãèŠãããŸããããåãããŸããã
- Diamond square â midpoint displacement, , midpoint displacement.
- /- . , .
- , () .
- - midpoint displacement. .
- çŽæ¥ãã³ã¯ãã€ãºã¯ãç®çã®åšæ³¢æ°ã®éããŒãªãšå€æãèšç®ããããšã§çæã§ããŸããããã¯ãåã®ã»ã¯ã·ã§ã³ã®äŸãšãŸã£ããåãã§ããããŒã«ã»ããŒã¯ã¯ãããåšæ³¢æ°åæãšèª¬æãã 3Dé«ãããããçæãã2Dãã€ãºãæ¢ãæ¹æ³ã瀺ããŠããŸãã
Voss-McCartneyã¢ã«ãŽãªãºã ã«é¢ããããã€ãã®æ
å ±ãããç°ãªãåšæ³¢æ°ã§ã®ãã€ãºã®åèšã¯ãã³ã¯ãã€ãºã§ã¯ãªããããããçæããã®ã«ååè¿ããšèããããã«ãªããŸããäžç¹å€äœã§åä¿¡ããããžã§ã€ã³ãã¯ããããåå ã§ããå¯èœæ§ãé«ããããŸãã¯è£éæ©èœãåå ã§ããå¯èœæ§ããããŸãããã«ãŒãã€ãºãçæããå€ãã®æ¹æ³ãèŠã€ããŸããã§ããã- , . , , , .
- â . , . . , .
- . , .
- , , , .
ã«ãŒãã«é©åãªãã«ãŒãã€ãºãå¿
èŠãã©ããããããããŸããããããã¯æç®ã§ã¯ãã«ãŒãã€ãºãšããŠèª¬æãããŠããŸããæ£åŒŠæ³¢ã䜿çšããŠçæãããã«ãŒãã€ãºã¯å¿
èŠãªãã®ãšäŒŒãŠããŸãããäžèšã®ææ³ã¯ã²ãŒã ã«é©ããŠãããšæãããŸãã11.远å ã®èªã¿ç©
ãã®èšäºã¯å
ã
èªåèªèº«ã®ããã®ã¡ã¢ã§ãããç§ãå
¬éãããšããå³ãæ¹åããããã€ãã®ã€ã³ã¿ã©ã¯ãã£ããªå³ã远å ããŸãããä»ã®èšäºãããã¯ããã«å°ãªãæéã§éãããŸããããããå€ãã®æ
å ±ãã«ããŒã§ããããã«ãããã€ãã®ãããã¯ã®èª¬æã詊ã¿ãŸããããŸãããã®èšäºã®ããŒã¿ã»ã©æŽç·ŽãããŠããªã2Dã®å®éšããããŸããç¹ã«ãããäºæ¬¡å
é«ããããã®äžæ¬¡å
å¯èŠåãç§ãããŸãè§Šããªãã£ãä»ã®ãããã¯ïŒ- äžã®ããŒãžlibnoiseè£é颿°ãæ»ããããªããã£ãã§ãªããã°ãªããªãçç±ã®èª¬æãå«ããå¹»æ³çãªãã€ãºã®èª¬æãããã³è£éæ©èœãæã£ãŠããŸã
- , ,
- ,
- green_meklar reddit
- Math/StackExchange
- (Stefan Gustavson) , , , , -
- ,
- (Julius Smith) ,
- Notch' Minecraft â , , ,
- 3D-
- 2D- â 2D- 2D- 4D-