2¼¡¸µ¤Î¥Ù¥¯¥È¥ë¤Î²óž¤Ï¡¢Æþ»îÌäÂê¤ÎÈϰϤΤ»¤¤¤«²òÀ⤹¤ë¥µ¥¤¥È¤Ï¿¤¤µ¤¤¬¤·¤Þ¤¹¡£
½Î¹Ö»Õ¤Ë¤è¤ëyoutube²òÀâ¤â¤¢¤Ã¤¿¤ê¤¹¤ë¤Î¤Ç¥²¡¼¥à³«È¯¤¹¤ë¦¤Ë¤È¤Ã¤Æ¤Ï½õ¤«¤ê¤Þ¤¹¤Í¡£
¤µ¤Æ¡¢¥ì¡¼¥À¡¼¤ß¤¿¤¤¤Ê¤Î¤È¤¤¤¦»ö¤Ê¤Î¤Çºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
¡Ö¥ì¡¼¥À¡¼¤Î¤è¤¦¤Ê¤â¤Î¡×¤È¤¤¤¦´¶¤¸¤Ç½ÐÎϤ·¤¿¤¤¤³¤È¤Î¶ñÂÎŪ¤Ê¥¤¥á¡¼¥¸¤òÄ󼨤·¤Æ¤â¤é¤¨¤ë¤È¤ä¤ê¤¿¤¤¤³¤È¤¬ÅÁ¤ï¤ë¤Î¤Ç¤¢¤ê¤¬¤¿¤¤¤Ç¤¹¡£
#module
; ¥Ù¥¯¥È¥ë²óž
; ¢2¼¡¸µ¤Î²óž¹ÔÎó¤È½ñ¤«¤ì¤Æ¤¤¤ëÉôʬ¤Î¼°¤ò»È¤¤¤Þ¤¹¡£
; https://w3e.kanazawa-it.ac.jp/math/category/gyouretu/senkeidaisu/henkan-tex.cgi?target=/math/category/gyouretu/senkeidaisu/rotation_matrix.html&pcview=2
#deffunc kaiten var vx, var vy, double x, double y, double r
vx = x*cos(r) - y*sin(r)
vy = x*sin(r) + y*cos(r)
return
; ²óÅ¾Ãæ¿´
#deffunc setcenter double p_cx, double p_cy
cx = p_cx
cy = p_cy
return
; ÀßÄꤷºÂºÂɸ¤òÃæ¿´¤Ë²óž
; ¢¿Þ¤À¤±¸«¤Æ¥¤¥á¡¼¥¸¤ò¤Ä¤«¤ó¤Ç¤¯¤À¤µ¤¤¡£
; https://imagingsolution.net/math/rotate-around-point/
#deffunc kaiten_center var v_vx, var v_vy, double p_x, double p_y, double p_r
; ²óÅ¾Ãæ¿´ºÂɸ¤ò¸¶ÅÀ¤Ø°Üư
x = p_x - cx
y = p_y - cy
; ¸¶ÅÀ¼þ¤ê¤Ëp_r¥é¥¸¥¢¥ó²óž
v_vx = x*cos(p_r) - y*sin(p_r)
v_vy = x*sin(p_r) + y*cos(p_r)
; ²óÅ¾Ãæ¿´¤ò¸µ¤ËÌ᤹
v_vx += cx
v_vy += cy
return
#global
screen 0, 640,480
;¼«µ¡
jx = 640.0/2
jy = 480.0/2
jr = 0.0
;Ũ
tx = jx
ty = jy - 10.0
; ¥¦¥£¥ó¥É¥¦¤ÎÃæ±û
cwx = ginfo_winx / 2
cwy = ginfo_winy / 2
*main
redraw 1
await 16
gsel 0
redraw 0
color 0,0,0
boxf
stick key, 31
//°Üư
; ¼«µ¡
if key&1 : jr -= deg2rad(1) ;¢«
if key&4 : jr += deg2rad(1) ;¢ª
if key&2 { ;¢¬
kaiten x,y, 0, -2, jr ; ¼«µ¡¤Î¸þ¤¤Ë¹ç¤ï¤»¤Æ¿Ê¤à¸þ¤¤ò²óž¤¹¤ë
jx += x
jy += y
}
; Ũ
ty = ty - 1.0
// ¥Ó¥å¡¼ÊÑ´¹
; ¼«µ¡¤ÎºÂɸ¤ò¥«¥á¥é¤ÎÃæ±û¤Ë¤¹¤ë¡£
; ²óž¤ÎÃæ¿´ºÂɸ
setcenter jx, jy
kaiten_center vjx, vjy, jx, jy, -jr
kaiten_center vtx, vty, tx, ty, -jr
; ¼«µ¡¤ò²èÌ̤ÎÃæ±û¤Ë¤¹¤ë
vtx = vtx - vjx + cwx
vty = vty - vjy + cwy
vjx = vjx - vjx + cwx
vjy = vjy - vjy + cwy
//¼«µ¡
color,255,0
pos vjx, vjy
mes"¢¥"
//Ũ
color 255,0,0
pos vtx, vty
mes"¡þ"
//
goto *main
¤Á¤ã¤ó¤Èư¤¤¤Æ¤ë¤«¤Ê¡ÄÇØ·Ê¤¬¤Ê¤¤¤«¤é¤è¤¯¤ï¤«¤é¤Ê¤¤¡£(¡¡¦¦Ø¡¦¡®)
´ðËÜŪ¤Ê¹Í¤¨Êý¤Ï¡¢¼«µ¡¤äŨ¤¬Æ°¤¯¶õ´Ö¤¬¤¢¤ê¡¢¤½¤ì¤ò¥«¥á¥é¤ÇÄɤ¤¤«¤±¤Æ¤¤¤ë¥¤¥á¡¼¥¸¤Ç¤¹¡£
¥¦¥£¥ó¥É¥¦¾å¤Ëɽ¼¨¤¹¤Î¤Ï¡¢¥«¥á¥é¤Ë±Ç¤Ã¤¿±ÇÁü¤Ç¤¹¡£
¼«µ¡¤äŨ¤¬Æ°¤¯¶õ´Ö¤ÎºÂɸ·Ï¤È¥«¥á¥é¤ÎºÂɸ·Ï¤Î2¤Ä¤¬¤¢¤ë¤Î¤Çʬ¤±¤Æ¹Í¤¨¤Ê¤¤¤Èºî¤ê¤ä¤¹¤¤¤Ç¤¹¡£
¤Þ¤º¼«µ¡¤äŨ¤¬Æ°¤¯¶õ´Ö¤Ç¼«µ¡¤äŨ¤òư¤«¤·¤Þ¤¹¡£
¼¡¤Ë¼«µ¡¤äŨ¤ÎºÂɸ¤ò¥«¥á¥é¤«¤é¸«¤¿ºÂɸ¤ËÊÑ´¹¤·¤Þ¤¹¡£¥Ó¥å¡¼ÊÑ´¹¤È½ñ¤¤¤Æ¤ë¤È¤³¤í¤Ç¤¹¤Í¡£
¤¢¤È¤Ï¥«¥á¥é¤«¤é¸«¤¿ºÂɸ¤ËÊÑ´¹¤·¤¿·ë²Ì¤òÉÁ²è¤¹¤ì¤Ð´°À®¤Ç¤¹¡£
¥Ù¥¯¥È¥ë¤Î²óžÉôʬ¤Ï¤è¤¯»È¤¦¤Î¤Ç´Ø¿ô¤Ë¤·¤Þ¤·¤¿¡£
Ãæ¤Ë½ñ¤¤¤Æ¤¤¤ë¼°¤Ï¥Ù¥¯¥È¥ë¤ò²óž¤¹¤ëʪ¤Ç¤¹¤¬¡Ä¤È¤ê¤¢¤¨¤º¤³¤¦¤¤¤¦¤â¤Î¤À¤È»×¤Ã¤Æ¤Þ¤º¤Ï»È¤Ã¤Æ¤ß¤Æ¤è¤¤¤È»×¤¤¤Þ¤¹¡£
¶½Ì£¤¬¤¢¤ì¤Ð2¼¡¸µ¥Ù¥¯¥È¥ë¤Î²óž¤Ë¤Ä¤¤¤ÆÄ´¤Ù¤Æ¤ß¤ë¤È¤è¤¤¤È»×¤¤¤Þ¤¹¡£Íý²ò¤·¤Æ»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤È¤È¤Æ¤âÊØÍø¤Ç¤¹¤è¡£
¤Þ¤¿¤½¤Î°ìÊý¤Ç¡¢Æñ¤·¤¤¿ô³Ø·×»»¤Ï¥â¥¸¥å¡¼¥ë¤ËǤ¤»¤ë¤È¤¤¤¦¤Î¤âÎɤ¤¼ê¤À¤È»×¤¤¤Þ¤¹¡£
d2c¥â¥¸¥å¡¼¥ë
https://mclab.uunyan.com/dl/dl50.htm
ÄÉ¿¡§µ»ö¤Îºï½ü¤Ï¥È¥é¥Ö¥ë¤Ç¤â¤Ê¤¤¸Â¤êºï½ü¤·¤Ê¤¤¤Ç¤Û¤·¤¤¤Ç¤¹¡£
¸å¤ÇƱ¤¸Çº¤ß¤òÊú¤¨¤ëÊý¤¬¸«¤¿ºÝ¤ËÆâÍÆ¤¬Äɤ¨¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡£