元三角関数不要論者にかかれば円を描くのに三角関数など不要
解法1:伝家の宝刀†フックの法則†を使わせて頂きますぞ!www
ACLS
XSCREEN 1
VAR K#=PI()*PI()*4/1024/1024 '円周を1024分割
VAR X#=320,VX#=0,X0#=200 'X座標,X速度,中心X
VAR Y#=120,VY#=PI()*2*120/1024,Y0#=120 'Y座標,Y速度,中心Y
VAR XP#=X#,YP#=Y# '過去の座標
VAR I%
FOR I%=1 TO 1024
XP#=X#:YP#=Y#
VX#=VX#-(X#-X0#)*K#
VY#=VY#-(Y#-Y0#)*K#
X#=X#+VX#:Y#=Y#+VY#
GLINE ROUND(X#),ROUND(Y#),ROUND(XP#),ROUND(YP#)
NEXT I%
WAIT 1E5
解法2:回転,拡大,縮小を司りし代数、それは複素数
ACLS
XSCREEN 1
VAR R#=1000,J#=1
VAR X#=320,Y#=120 '半径120の円
VAR X0#=200,Y0#=120
VAR DIST#=SQR(R#*R#+J#*J#)
VAR XP#,YP#=120
R#=R#/DIST#:J#=J#/DIST#
WHILE Y#<120||YP#>=120
XP#=X#:YP#=Y#
VAR TMP#=X#
X#=X0#+(TMP#-X0#)*R#-(Y#-Y0#)*J#
Y#=Y0#+(TMP#-X0#)*J#+(Y#-Y0#)*R#
GLINE ROUND(X#),ROUND(Y#),ROUND(XP#),ROUND(YP#)
WEND
WAIT 1E5
解法3:半径は別に0でも問題ないよね
ACLS
XSCREEN 1
GPSET 200,120
WAIT 1E5
解法4:ブレゼンハムって実は書いたことないのでこの機会に書いてみる
ACLS
XSCREEN 1
VAR X%=0,Y%=120
VAR XD%=0,YD%=119
WHILE X%<Y%
GPSET 200+X%,120+Y%:GPSET 200+X%,120-Y%
GPSET 200-X%,120+Y%:GPSET 200-X%,120-Y%
GPSET 200+Y%,120+X%:GPSET 200+Y%,120-X%
GPSET 200-Y%,120+X%:GPSET 200-Y%,120-X%
XD%=XD%+(X%<<1)+1
IF XD%>YD% THEN
YD%=YD%+(Y%<<1)-1
Y%=Y%-1
ENDIF
X%=X%+1
WEND
WAIT 1E5