.. title:: Pythonã§å¿ƒç†å®Ÿé¨“ - 例題12-1 例題12-1:Müller-Lyer錯視ã®å®Ÿé¨“ ============================================== **A:** 今回ã¯ä¹…々ã«å®Ÿé¨“プãƒã‚°ãƒ©ãƒ を題æã«å–り上ã’ã¾ã™ã€‚例題5-5以æ¥ã§ã™ã。ã“ã†ã„ã†ã®ã“ãã¾ã•ã«ã€Œä¾‹é¡Œã€ã¨ã„ã†åç§°ã«ãµã•ã‚ã—ã„ã¨æ€ã„ã¾ã™ã€‚ **B:** ã¡ã‚‡ã€Aã•ã‚“ã€ãªã‚“ã§ã™ã‹ã„ããªã‚Šã€‚ **A:** Bå›ã®ãã®ãƒ„ッコミも例題11-2ã‹ã‚‰ã»ã¨ã‚“ã©å¤‰åŒ–ãŒã‚りã¾ã›ã‚“ãã€‚ä½œè€…ãŒæŠ•ã’やりã«ãªã£ã¦ã„る様åãŒç›®ã«æµ®ã‹ã¶ã‚ˆã†ã§ã™ã€‚ ã•ã¦ã€ã§ã¯ã•ã£ãã解説ã«å…¥ã‚Šã¾ã—ょã†ã€‚今回ã®é¡Œæã¯â€¦ **B:** ã¯ã¯ãã€ã¾ãŸæ¬¡å›žäºˆå‘Šã¨é•ã†ã“ã¨å§‹ã‚ãŸã®ãŒå¾Œã‚ã‚ãŸã„ã‚“ã§ã™ã? **A:** ã£ã¨ã£ã¨ã€ã”ãµã”ãµã€‚ã„ã€ã„ã£ãŸã„何ã®è©±ã‹ã。ãれã¯ã€‚ **B:** ã¯ã„ã¯ã„ã€‚ã‚°ãƒ©ãƒ•ã®æç”»ã¯è‡ªåˆ†ã§å‹‰å¼·ã—ã¨ãã¾ã™ã‚“ã§ã€æ°—ã®æ¸ˆã‚€ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 **A:** むむã£ã€ã‚°ãƒ©ãƒ•ã®æç”»ã¯ä»Šå›žã®ä¾‹é¡Œã§ã‚‚å–り上ã’ã‚‹ãžã€‚確ã‹ã«äºˆå‘Šã—ã¦ã„ãŸé€šã‚Šã®å†…容ã§ã¯ãªã„ã‚“ã ãŒâ€¦ **B:** ã¾ã‚ã¾ã‚。実際ã®å®Ÿé¨“プãƒã‚°ãƒ©ãƒ ã®ä¾‹ã‚’出ã™ã“ã¨ã‚‚大事ã§ã—ょã†ã—ã。 **A:** Bå›ã«ãã‚“ãªãƒ•ã‚©ãƒãƒ¼ã•れるよã†ã§ã¯ãŠã—ã¾ã„ã ãªã€‚ã¾ã‚ã€å®Ÿéš›å•題Bå›ã®è¨€ã†é€šã‚Šãªã‚“ã ãŒã€‚ 今回ã®é¡Œæã¯éŒ¯è¦–ã¨ã„ãˆã°å¿…ãšå‡ºã¦ãã‚‹:Müller-Lyer錯視ã€å¤§å¦å¿ƒç†å¦ã‚’å¦ã‚“ã 人ã®ã»ã¨ã‚“ã©ã¯åˆç´šå®Ÿé¨“ã§ãŠç›®ã«ã‹ã‹ã£ãŸã“ã¨ã ã‚ã†ã€‚ **B:** ã¼ããŒå—ã‘ãŸæ™‚ã¯ã‚„りã¾ã›ã‚“ã§ã—ãŸãŒâ€¦ **A:** ã ã‹ã‚‰ã€Œã»ã¨ã‚“ã©ã€ã£ã¦è¨€ã£ã¦ã‚‹ã ã‚。ãŸã£ãŸä¸€ä»¶ã®å例ã§å¦å®šã™ã‚‹ãªã€‚ **B:** ã¸ãˆã€ã˜ã‚ƒã‚Aã•ã‚“ã¯ä½•例ãらã„知ã£ã¦ã‚‹ã‚“ã§ã™ã‹ï¼Ÿ **A:** ãˆãˆã¨ã€ç§ã®å‡ºèº«æ ¡ã¨ã€åˆã‚ã¦éžå¸¸å‹¤ã‚’ã—ãŸå¤§å¦ã¨ã€â€¦ã€4æ ¡ã‹ãªã€‚ **B:** Aã•ã‚“ã“ã「ã»ã¨ã‚“ã©ã€ã£ã¦ã„ã†ã«ã¯ç„¡ç†ãŒã‚るよã†ãªæ°—ãŒã—ã¾ã™ãŒã€‚ **A:** ã†ã‚‹ã•ã„。ã¨ã«ã‹ãå§‹ã‚ã‚‹ãžã€‚ãˆãˆã¨ã€èªè€…ã®çš†æ§˜ã€ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã¯é•·ããªã‚‹ã®ã§æœ€å¾Œã«ã¾ã¨ã‚ã¦æŽ²è¼‰ã—ã¦ã€è§£èª¬ã—ã¦ãŠããŸã„ãƒã‚¤ãƒ³ãƒˆã‚’ã“れã‹ã‚‰æŒ™ã’ã¦ã„ãã¾ã™ã€‚ ç§è‡ªèº«ãŒpythonを勉強ã—å§‹ã‚ãŸã“ã‚ã«æ›¸ã„ãŸã‚‚ã®ãªã®ã§ã€ä»Šãªã‚‰ã‚‚ã£ã¨ã†ã¾ã„æ›¸ãæ–¹ãŒã‚るよãªã‚ã¨æ€ã†ç‚¹ã‚‚ã‚りã¾ã™ãŒã€æ•¢ãˆã¦ãã®ã¾ã¾æ®‹ã—ã¦ã‚りã¾ã™ã€‚ **B:** 書ããªãŠã™ã®ãŒé¢å€’ãã•ã„ã ã‘ã˜ã‚ƒãªã„ã®ã‹ãã‡ã€‚ コマンドライン引数 ~~~~~~~~~~~~~~~~~~ **B:** ãˆãˆã¨ã€ã¾ãšæœ€åˆã®ã“れã¯ä½•ã§ã™ã‹ã。 **A:** ã“れã¯Windowsã®ã‚³ãƒžãƒ³ãƒ‰ã‚·ã‚§ãƒ«ãªã©ã®CUI(Character User Interface)ãŒå¥½ããªäººå‘ã‘ã ã。 ã“ã‚“ãªé¢¨ã«ã‚³ãƒžãƒ³ãƒ‰ã‚’打ã¡è¾¼ã‚“ã§pythonスクリプトを起動ã—ãŸã¨ãã«ã€ã‚¹ã‚¯ãƒªãƒ—トåã®å¾Œã‚ã«ã¤ã‘ãŸå¼•数をスクリプトã‹ã‚‰å‚ç…§ã™ã‚‹æ–¹æ³•ã 。 .. code-block:: doscon D:\work>python experiment.py SubjectName color 120 **A:** ã“ã®ä¾‹ã§ã¯experiment.pyãŒpythonスクリプトã®ãƒ•ァイルåã§ã€å¾Œã‚ã«ç¶šã"SubjectName"ã€"color"ã€"120"ã®3ã¤ãŒå¼•æ•°ã 。 **B:** 引数ã¨ã„ã†ã®ã¯é–¢æ•°ã®ã¨ã“ã‚ã§ã‚‚出ã¦ãã¾ã—ãŸã。åŒã˜ã‚ˆã†ãªã‚‚ã®ã ã¨æ€ãˆã°ã„ã„ã‚“ã§ã™ã‹ã。 **A:** ã¾ã‚ã€ãã†ã‹ãªã€‚ãŸã ã€pythonã®é–¢æ•°ã¨é•ã£ã¦æ¸¡ã•れãŸå¼•数をスクリプト内ã§ä½•ã¨ã„ã†åå‰ã®å¤‰æ•°ã§å—ã‘å–れã°ã„ã„ã®ã‹ã“れã§ã¯ã‚ã‹ã‚‰ãªã„よã。 pythonã§ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³å¼•æ•°ã‚’å—ã‘å–ã‚‹ã«ã¯ã€sysモジュールimportã—ã¦ã€sys.argvã¨ã„ã†ãƒªã‚¹ãƒˆã‚’å‚ç…§ã™ã‚Œã°ã„ã„。上ã®ä¾‹ã§ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ãªå€¤ãŒæ ¼ç´ã•れã¦ã„る。 .. csv-table:: :delim: $ sys.argv[0]$experiment.py sys.argv[1]$SubjectName sys.argv[2]$color sys.argv[3]$120 **B:** ãµã‚€ãµã‚€ã€‚sys.argv[0]ã«ã¯ã‚¹ã‚¯ãƒªãƒ—トåãã®ã‚‚ã®ãŒå…¥ã£ã¦ã‚‹ã‚“ã§ã™ã。 **A:** ãã†ã€‚コマンドライン引数ãŒã²ã¨ã¤ã‚‚ãªã„(0個)ã®å ´åˆã§ã‚‚スクリプトåã¯å¿…ãšå˜åœ¨ã™ã‚‹ã®ã§ã€ **引数ãŒ0å€‹ã®æ™‚ã®sys.argvã®é•·ã•ã¯1ã«ãªã‚‹** ã¨ã„ã†ç‚¹ã«æ³¨æ„ã—ã¦ã»ã—ã„ã€‚åŒæ§˜ã«ã€ **n個ã®å¼•æ•°ãŒã‚る時ã¯sys.argvã®é•·ã•ã¯n+1個** ã 。 引数ã®å€‹æ•°ã§å‡¦ç†ã‚’振り分ã‘ã‚‹ã¨ãã«ã†ã£ã‹ã‚Šé–“é•ãˆã‚„ã™ã„。ã¾ã‚ã€é–“é•ãˆã¦ãŸã‚‰ãƒ—ãƒã‚°ãƒ©ãƒ ãŒæ£å¸¸ã«å‹•ã‹ãªã„ã®ã§ã™ã気付ãã¨ã¯æ€ã†ãŒã€‚ **B:** ãªã‚‹ã»ã©ã€‚メモメモ。 **A:** ã“ã®ä¾‹ã§æ³¨æ„ã—ã¦ã»ã—ã„ã®ã¯ã€æœ€å¾Œã®"120"ã 。 **sys.argvã§ã¯å¼•æ•°ãŒæ–‡å—列ã¨ã—ã¦æ¸¡ã•れる** 。 ã¤ã¾ã‚Šã€ã€Œ1ã€ã¨ã€Œ2ã€ã¨ã€Œ0ã€ã¨ã„ã†ä¸‰æ–‡å—ã®æ–‡å—列ã¨ã—ã¦æ¸¡ã•れã¦ã„ã‚‹ã‚“ã ã。数値ã¨ã—ã¦å‡¦ç†ã™ã‚‹ãŸã‚ã«ã¯int(sys.argv[3])ãªã©ã¨ã™ã‚‹å¿…è¦ãŒã‚る。 **B:** é¢å€’ãã•ã„ã§ã™ããˆã€‚ **A:** プãƒã‚°ãƒ©ãƒžãŒæ–‡å—åˆ—ã¨æ•°å€¤ã®ã©ã£ã¡ã‚’æ„図ã—ã¦ã‚“ã®ãªã‚“ã‹ãªã‚“ã¦pythonインタプリタã«ã‚ã‹ã‚‹ã‚ã‘ãªã„ã ã‚。 ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã¯æ–‡å—列ãªã‚“ã ã‹ã‚‰ã€ä½™è¨ˆãªã“ã¨ã¯ã›ãšã«ãã®ã¾ã¾æ¸¡ã—ã¦ãれる方ãŒã„ã„。 **B:** ã¯ã‚ã€ãã‚“ãªã‚‚ã‚“ã§ã™ã‹ã。 **A:** サンプルプãƒã‚°ãƒ©ãƒ ã§ã¯ã€53ã‹ã‚‰64行目ã§ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³å¼•æ•°ãŒãªã‘れã°è¢«é¨“者åãªã©ã®å…¥åŠ›ã™ã‚‹ãƒ€ã‚¤ã‚¢ãƒã‚°ã‚’表示ã—ã€ã‚れã°ç¬¬1引数ã®åå‰ã§ãƒ‡ãƒ¼ã‚¿å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ãã¨ã„ã†å‡¦ç†ã‚’ã—ã¦ã„ã‚‹ã®ã§è¦‹ã¦ã¿ã¦ã»ã—ã„。 プラットフォームã®åˆ¤åˆ¥ ~~~~~~~~~~~~~~~~~~~~~~ **B:** ç¶šã„ã¦ãƒ—ラットフォームã®åˆ¤åˆ¥ã¨ã„ã†ã“ã¨ã§ã™ãŒã€ã“れã¯ï¼Ÿ **A:** ã“ã®å ´åˆã®ãƒ—ラットフォームã£ã¦ã®ã¯Windowsã¨ã‹Linuxã¨ã‹ã€pythonスクリプトを実行ã—ã¦ã„る環境ã®ã“ã¨ã 。 例ãˆã°æ—¥æœ¬èªžã‚’表示ã™ã‚‹ã¨ãã®ãƒ•ォントファイルãªã©ã€OSã«ã‚ˆã£ã¦ã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè¡Œã«å¿…è¦ãªãƒ‘ラメータãŒç•°ãªã‚‹å ´åˆãŒã‚る。 ã©ã¡ã‚‰ã®ãƒ—ラットフォームã§å®Ÿè¡Œã§ãるスクリプトを用æ„ã—ãªã‘れã°ã„ã‘ãªã„時ã«ä¾¿åˆ©ãªæ©Ÿèƒ½ã 。 **B:** ã†ãƒ¼ã‚“ã€ä¾¿åˆ©ã¨è¨€ã‚れるã¨ä¾¿åˆ©ãã†ãªæ°—ã‚‚ã—ã¾ã™ãŒã€ãã‚‚ãã‚‚Windowsã¨Linuxã§åŒã˜ãƒ—ãƒã‚°ãƒ©ãƒ を実行ã—ãªãゃã„ã‘ãªã„ãªã‚“ã¦ã“ã¨ã‚ã‚‹ã‚“ã§ã™ã‹ã? **A:** 複数ã®ç ”ç©¶æ‹ ç‚¹ã§å…±åŒç ”ç©¶ã™ã‚‹å ´åˆã¨ã‹ã€ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã‚’é…布ã™ã‚‹å ´åˆã¨ã‹ãªã‚“ã‹ãŒãã†ã ãªã€‚ **B:** ã˜ã‚ƒã€ã“ã®ã‚³ãƒ¼ãƒŠãƒ¼ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ãªã‚“ã¦ã¾ã•ã«ã´ã£ãŸã‚Šã˜ã‚ƒãªã„ã§ã™ã‹ã€‚ãªã‚“ã§ä»Šã¾ã§ã®ã‚µãƒ³ãƒ—ルã§ã¯ãã®ãƒ—ラットフォームã®åˆ¤åˆ¥ï¼Ÿã¨ã‚„らをã—ã¦ãªã‹ã£ãŸã‚“ã§ã™ã‹ï¼Ÿ **A:** ãã‚“ãªã®ã€é¢å€’ãã•ã„ã‹ã‚‰ã«æ±ºã¾ã£ã¦ãŠã‚ã†ã€‚ **B:** ã‚ーã€é–‹ã直りã¾ã—ãŸã。 **A:** ãŠã†ã‚ˆã€‚ãã“ã¾ã§æ°—を使ã£ã¦ãŸã‚‰é¢å€’ãã•ãã£ã¦ã“ã“ã¾ã§ç¶šã‹ãªã‹ã£ãŸã ã‚ã†ã‚ˆã€‚ã¨ã«ã‹ãã€ãƒ—ラットフォームを判定ã™ã‚‹ã«ã¯sysモジュールをimportã—ã¦sys.platformã‚’å‚ç…§ã™ã‚‹ã€‚ **B:** ã¾ãŸsysモジュールã§ã™ã‹ã€‚ **A:** サンプルプãƒã‚°ãƒ©ãƒ ã®69ã‹ã‚‰76行目ã§ã€ãƒ—ラットフォームãŒWin32ã‹å¦ã‹ã§ãƒ•ォントファイルåを切り替ãˆã‚‹ä¾‹ã‚’示ã—ã¦ã„る。 Win32ã˜ã‚ƒãªã‘れã°Ubuntuã¨æ±ºã‚打ã¡ã—ã¦ã„ã‚‹ã®ã§ã€Macã¨ã‹ä½¿ã£ã¦ã‚‹äººã¯ã†ã¾ãã‚„ã£ã¡ã‚ƒã£ã¦ãã ã•ã„。 **B:** 相変ã‚らãšAã•ã‚“ã¯Macã«å޳ã—ã„ãªã‚。ãªã‚“ã‹æ¨ã¿ã§ã‚‚ã‚ã‚‹ã‚“ã§ã™ã‹ï¼Ÿ **A:** ã ã£ã¦MacæŒã£ã¦ãªã„ã‚“ã ã‚‚ã®ã€‚ã“ã®ã‚³ãƒ¼ãƒŠãƒ¼ã®ãŸã‚ã ã‘ã«Macè²·ã†ã»ã©è£•ç¦ã˜ã‚ƒãªã„ã—。ã•ã¦ã€æ¬¡è¡Œããžã€æ¬¡ã€‚ 刺激ã®ä½ç½®ã¨å›žè»¢è§’åº¦ã®æŒ‡å®š ~~~~~~~~~~~~~~~~~~~~~~~~~~ **B:** ãˆãˆã¨ã€ã“れã¯ä»Šã¾ã§ã®ä¾‹é¡Œã§å‡ºã¦ãã¾ã›ã‚“ã§ã—ãŸã£ã‘。 **A:** ã†ãƒ¼ã‚€ã€‚例題1ã§ã¡ã‚‰ã£ã¨è§¦ã‚Œã¦ã€ãã®å¾Œã‚ããªè§£èª¬ãªã—ã«ä¾‹é¡Œ7ã‚„8ã§ä½¿ã£ãŸã‚Šã—ã¦ã„ãŸã‚“ã ãŒã€ã¡ã‚ƒã‚“ã¨è§£èª¬ã—ãŸã“ã¨ãŒãªã‹ã£ãŸãªã¨æ€ã£ã¦ã€‚ 特ã«anchorã¨orientationを両方指定ã—ãŸã„å ´åˆã«ã¡ã‚‡ã£ã¨æ··ä¹±ã™ã‚‹ã“ã¨ãŒã‚ã‚‹ã®ã§ã€ã„ã¤ã‹ã¡ã‚ƒã‚“ã¨è§¦ã‚Œã¦ãŠã‹ãªãゃãªã¨æ€ã£ã¦ã„ãŸã€‚ **B:** anchorã¯åˆºæ¿€ã®ä½ç½®ã‚’指定ã™ã‚‹ã¨ãã«ã©ã“を基準ã«ã™ã‚‹ã‹ã€ã§ã—ãŸã。orientationã¯ã©ã‚Œã ã‘回転ã™ã‚‹ã‹ã€‚ **A:** ãã†ã€‚ã¾ãšã€anchorã«æŒ‡å®šã§ãる「ä½ç½®ã€ã«ã¯ã©ã®ã‚ˆã†ãªç¨®é¡žãŒã‚ã‚‹ã‹ã£ã¦ç‚¹ãªã‚“ã ãŒã€ã“れã€VisionEggã®helpã«æ›¸ã„ã¦ã‚ã‚‹ã¨æ€ã£ã¦ãŸã‚“ã§è©³ã—ã解説ã—ã¦ã„ãªã‹ã£ãŸã‚“ã ã‘ã©ã€æ”¹ã‚ã¦ç¢ºèªã—ãŸã‚‰æ›¸ã„ã¦ãªã„ã®ã‚ˆã。 ã˜ã‚ƒã‚ç§ã¯ã©ã“ã§è¦‹ãŸã‚“ã ã£ãŸã‘ãªï¼Ÿã¨æ€ã£ã¦ã‚れã“れ調ã¹ãŸã‚‰VisionEggã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã ã£ãŸã€‚ ã“れã¯å¤§äº‹ãªæƒ…å ±ãªã®ã«helpã«æ›¸ã‹ã‚Œã¦ã„ãªã„ã£ã¦ã®ã¯ã¡ã‚‡ã£ã¨ã¾ãšã„ã®ã§ã€ã“ã“ã«ã¡ã‚ƒã‚“ã¨è¼‰ã›ã¦ãŠã“ã†ã¨æ€ã£ã¦ã€‚ã“ã‚“ãªæ„Ÿã˜ã 。 .. csv-table:: :delim: $ anchorã«æŒ‡å®šã§ãã‚‹ä½ç½® 左上$'upperleft'$上$'top'$å³ä¸Š$'upperright' å·¦$'left'$ä¸å¤®$'center'$å³$'right' 左下$'lowerleft'$下$'bottom'$å³ä¸‹$'lowerright' **B:** ã¯ã‚ã€è¦šãˆã¦ã•ãˆã„れã°ã€ç‰¹ã«é›£ã—ã„ã¨ã“ã‚ã¯ãªã•ãã†ã§ã™ã。 **A:** ã¨ã“ã‚ãŒã ãªã€ã“れãŒorientationã¨ã‹angleã¨çµ„ã¿åˆã‚ã•れるã¨ã¡ã‚‡ã£ã¨åބ介ãªã‚“ã 。ã“ã®ä¾‹ã‚’見ã¦ãれ。 VisionEgg.Text.Text(å·¦ã®"A")ã¨VisionEgg.MoreStimuli.Target2D(å³ã®æ£æ–¹å½¢)を表示ã—ãŸã¨ã“ã‚ãªã®ã ãŒã€ãれãžã‚Œanchorã¯centerã€æ·¡ã„黄色ã¯angle=0ã€é»„色ã¯angle=45ã€æ·¡ã„é’色ã¯orientation=0ã€é’色ã¯angle=45ãŒæŒ‡å®šã•れã¦ã„る。 .. figure:: img/12-1-01.png anchor='center'ã®å ´åˆ **B:** ã¸ã€angleã¨orientationã£ã¦ä½•ãŒé•ã†ã‚“ã§ã—ãŸã£ã‘? **A:** ã‚„ã‚„ã“ã—ã„ã‚“ã ãŒã€angleã¯VisionEgg.Text.Textã§å›žè»¢è§’度を指定ã™ã‚‹å¼•æ•°ã€orientationã¯VisionEgg.MoreStimuli.Target2Dã§å›žè»¢è§’度を指定ã™ã‚‹å¼•æ•°ã 。 **B:** 指定ã™ã‚‹å¼•æ•°ã®åå‰ãŒé•ã†ãªã‚“ã¦å…¨ç„¶æ°—ã¥ã„ã¦ãªã‹ã£ãŸã€‚ **A:** ã¨ã«ã‹ãã€é»’ã„ç·šã®äº¤ç‚¹ãŒpositionã«æŒ‡å®šã•れã¦ã„ã‚‹ä½ç½®ã§ã€ã„ãšã‚Œã®åˆºæ¿€ã‚‚é»’ã„ç·šã®äº¤ç‚¹ã«ä¸å¿ƒãŒä¸€è‡´ã—ã¦ã„ã¦(anchor='center')ã€æ¿ƒã„色ã®åˆºæ¿€ã¯æ·¡ã„刺激より45度回転ã—ã¦ã„る。ãれã¯ã„ã„ã‹ãªï¼Ÿ **B:** ã¯ã„ã€ãりゃãã†ã„ã†é¢¨ã«æŒ‡å®šã—ãŸã‚“ã§ã™ã‹ã‚‰å½“ãŸã‚Šå‰ã§ã™ã‚ˆã。 **A:** ã†ã‚€ã€‚ã§ã¯ç¶šã„ã¦anchor='lowerright'ã«ã™ã‚‹ã¨ã©ã†ãªã‚‹ã‹è¦‹ã¦ã¿ã‚ˆã†ã€‚ .. figure:: img/12-1-02.png anchor='lowerright'ã®å ´åˆ **B:** ん? ãªã‚“ã ã‹å¤‰ã ãªã€‚ã§ã‚‚何ãŒå¤‰ãªã‚“ã ã‚ã†ï¼Ÿ **A:** ã¾ãšã€anchorã‚’å³ä¸‹ã«æŒ‡å®šã—ãŸã‚“ã ã‹ã‚‰ã€åˆºæ¿€ã®å³ä¸‹ãŒé»’ç·šã®äº¤ç‚¹ã¨ä¸€è‡´ã™ã‚‹ã‚ˆã†ã«åˆºæ¿€ãŒé…ç½®ã•れる。ãã“ã¾ã§ã¯OK? **B:** ã¯ã„。 **A:** å•題ã¯ã“ã“ã‹ã‚‰ã ãŒã€VisionEgg.Text.Textã§ã¯æ–‡å—列ã®å³ä¸‹ã‚’ä¸å¿ƒã«å›žè»¢ã—ã¦ã„る。ãれã«å¯¾ã—ã¦ã€VisionEgg.MoreStimuli.Target2Dã¯å›³å½¢ã®ä¸å¤®ã‚’ä¸å¿ƒã«ã—ã¦å›žè»¢ã—ã¦ã„ã‚‹ã‚“ã 。 **B:** ã‚ーã€ãªã‚‹ã»ã©ã€‚ã§ã‚‚ã€ãªã‚“ã§ï¼Ÿ **A:** ã†ãƒ¼ã‚“ã€æ£ç›´ãªã¨ã“ã‚æ„図ãŒã‚ˆãã‚ã‹ã‚‰ã‚“ãªã€‚ã‚‚ã†ä¸€ä¾‹è¦‹ã¦ãŠã“ã†ã‹ã€‚次ã¯anchor='top'ã 。 .. figure:: img/12-1-03.png anchor='top'ã®å ´åˆ **B:** ã‚„ã£ã±ã‚Šæ–‡å—ã¯ä¸Šã‚’ä¸å¿ƒã«å›žè»¢ã—ã¦ã„ã¦ã€æ£æ–¹å½¢ã¯ä¸å¤®ã‚’ä¸å¿ƒã«ã—ã¦å›žè»¢ã—ã¦ã¾ã™ã…。やã£ã±ã‚Šç´å¾—ã„ã‹ãªã„ãªã‚。 **A:** ã¨ã«ã‹ãã€å›žè»¢ä¸å¿ƒã®æ±ºã‚æ–¹ãŒé•ã†ã®ã§ã€æ£æ–¹å½¢ã®ä¸Šã«æ–‡å—ã‚’é‡ããŸåˆºæ¿€ã‚’制作ã—ã¦ã€ãれを回転ã•ã›ãŸã„ã¨ã‹æ€ã£ãŸæ™‚ã«ã¯æ³¨æ„ã™ã‚‹å¿…è¦ãŒã‚る。 **B:** ãã¡ã‚“ã¨é‡ãªã‚‹ã‚ˆã†ã«åº§æ¨™ã‚’計算ã—ãªã„ã¨ã„ã‘ãªã„ã£ã¦ã“ã¨ã§ã™ã‚ˆã。ã†ã’ã‡ã€é¢å€’ãã•ãã†ã€‚ **A:** **anchor='center'ãªã‚‰å›žè»¢ä¸å¿ƒã¯æ–‡å—ã§ã‚‚æ£æ–¹å½¢ã§ã‚‚é»’ç·šã®äº¤ç‚¹(=position)ã¨ä¸€è‡´ã™ã‚‹ã‚“ã ã‹ã‚‰ã€å›žè»¢ã•ã›ãŸåˆºæ¿€ã‚’é‡ãã‚‹ã¨ãã¯å…¨éƒ¨'center'ã«ã™ã‚Œã°ã„ã„ã‚“ã よ** 。 **B:** ã‚ã€ãã†ã‹ã€‚ãªã‚‹ã»ã©ã€‚ **A:** サンプルプãƒã‚°ãƒ©ãƒ ã§ã¯ã€148ã‹ã‚‰151行目ã€Müller-Lyer図形ã®çŸ¢ç¾½ã‚’æç”»ã™ã‚‹ã¨ã“ã‚ãŒã“ã®å•題ã¨é–¢ä¿‚ãŒã‚る。 ã‚‚ã—Target2Dã‚‚Textã¨åŒã˜ã‚ˆã†ã«anchorã®ä½ç½®ãŒå›žè»¢ã®ä¸å¿ƒã¨ãªã‚‹ãªã‚‰ã°ã€å³å´ã®çŸ¢ç¾½ã®anchorã‚’leftã€å·¦å´ã‚’rightã«ã—ã¦positionを主線ã®ç«¯ã«ä¸€è‡´ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã—ã¦ãŠã‘ã°ã€ã‚‚ã£ã¨ç°¡å˜ã«æç”»ã§ãã‚‹ã‚“ã ãŒã€ 残念ãªãŒã‚‰ãã®ã‚ˆã†ã«ãªã£ã¦ã„ãªã„ã®ã§ã€anchor='center'ã¨ã—ã¦çŸ¢ç¾½ã¨ä¸»ç·šãŒã´ã£ãŸã‚Šåˆã†ã‚ˆã†ã«çŸ¢ç¾½ã®ä¸å¿ƒã®åº§æ¨™ã‚’計算ã—ã¦ã„る。 é¢å€’ã ãŒã¾ã‚仕方ãŒãªã„ãªã€‚ãªãŠã€anchorã¨orientationã€positionã®é–¢ä¿‚ãŒã„ã¾ã„ã¡ã‚ˆãã‚ã‹ã‚‰ãªã„人ã®ãŸã‚ã«ã€ä¸Šã®å›³ã‚’æç”»ã™ã‚‹ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ( `12-1a.py <source/12-1a.py>`_ )を用æ„ã—ã¦ãŠã„ãŸã®ã§å‚考ã«ã—ã¦ã»ã—ã„。 **B:** 三角関数ã§ã™ãã€‚é«˜æ ¡ç”Ÿã®æ™‚ã¯ã“ã‚“ãªã®å¤§å¦ç”Ÿã«ãªã£ã¦ã‚‚使ã†ã¨ã¯æ€ã£ã¦ãªã‹ã£ãŸãªã‚。 **A:** サンプルプãƒã‚°ãƒ©ãƒ ã®æ®‹ã‚Šã®éƒ¨åˆ†ã¯ä»Šã¾ã§ã®ä¾‹é¡Œã‚’見ã¦ããŸäººãªã‚‰å¤§ä½“ã‚ã‹ã‚‹ã¯ãšã€‚ **B:** ãˆãˆã¨â€¦ã€ã“れã€ä¾‹é¡Œ7ã§å‡ºã¦ããŸPresentationを使ã£ã¦ãŸã‚Šã¨ã‹ã€ä¾‹é¡Œ5ã®ã‚ー入力待ã¡é–¢æ•°ã£ã½ã„ã®ã¨ã‹ã€ã„ã‚ã„ã‚入り混ã˜ã£ã¦ã¾ã™ããˆã€‚ ã‚ー押ã—ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ã‚‹ã¨ã“ã‚(175行目以é™)ã®gKeys['UP']ã£ã¦ã®ã¯ã‚ã¾ã‚Šè¦‹ãŸã“ã¨ãŒãªã„よã†ãªï¼Ÿ **A:** ãれã¯ä¾‹é¡Œ3-3ã§å‡ºã¦ããŸã€Œè¾žæ›¸åž‹ã€ã®å¤‰æ•°ã ãªã€‚最åˆã«è¨€ã£ãŸã‚ˆã†ã«ã€ç§è‡ªèº«ãŒè©¦è¡ŒéŒ¯èª¤ã—ã¦ã„ãŸã“ã‚ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã ã‹ã‚‰ã€ã¨ã«ã‹ãã„ã‚ã„ã‚ãªæ©Ÿèƒ½ã‚’使ã£ã¦ã¿ã¦ã„る。 **B:** …。最後ã®ã‚°ãƒ©ãƒ•ã®æç”»ã®éƒ¨åˆ†ãŒã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“ããˆã€‚ã£ã¦ã„ã†ã‹ã€Aã•ん「次ã¯ã‚°ãƒ©ãƒ•ã®æãæ–¹ã‚’ã‚„ã‚‹ãžã€ã£ã¦ä½•度も予告ã—ã¦ã¯æ”¾æ£„ã—ã¦ã€ã¾ã ã»ã¨ã‚“ã©è§£èª¬ã—ã¦ãれã¦ãªã„ã˜ã‚ƒãªã„ã§ã™ã‹ï¼ **A:** ã†ã‚€ã€‚実ã¯ãã“も今回解説ã™ã‚‹ã¤ã‚‚りã ã£ãŸã®ã ãŒãªã€‚間抜ã‘ãªä½œè€…ãŒã“ã®åŽŸç¨¿ã‚’æ›¸ãå§‹ã‚ã¦ã‹ã‚‰ã€Œã¡ã‚‡ã£ã¨ä¾‹é¡Œ12-1ã§å…¨éƒ¨è§£èª¬ã™ã‚‹ã®ã¯ãƒ リã€ã£ã¦æ°—ã¥ã„ãŸã‚‰ã—ã„ã‚“ã ãªã€‚ã ã‹ã‚‰æœ¬æ¥äºˆå®šã—ã¦ã„ãªã‹ã£ãŸä¾‹é¡Œ12-2ã‚’è¨å®šã—ã¦ã€ãã“ã§ã‚°ãƒ©ãƒ•ã®æç”»ã®éƒ¨åˆ†ã‚’解説ã™ã‚‹ã‚‰ã—ã„。 **B:** らã—ã„ã€ã£ã¦Aã•ん…。 **A:** ãã‚“ãªã‚ã‘ã§ã€æ¬¡å›žã«ç¶šãã¾ã™ã€‚ + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `12-1.py <source/12-1.py>`_ .. literalinclude:: source/12-1.py :language: python :encoding: shift-jis :linenos: :lineno-match: