陰関数の描画



  100   screen 1
  110   cls 3
  120   print "陰関数 f(x,y)=0 の概形を調べます"
  130   print "式 f(x,y) を入力してください(例:X^2+Y^2-10)"
  140   strinput F$
  150   F$=encode(F$)
  160   MaxOfX=15
  170   Dwidth=5
  180   cls 3
  190   if Dwidth<1 then Dwidth=1
  200   MaxOfY=MaxOfX*400/640
  210   Dp=MaxOfX/320
  220   window (-MaxOfX,MaxOfY)-(MaxOfX,-MaxOfY)
  230   line (-MaxOfX,0)-(MaxOfX,0),7
  240   for I=-int(MaxOfX) to int(MaxOfX)
  250    line (I,10*Dp)-(I,-10*Dp),7
  260   next
  270   line (0,-MaxOfY)-(0,MaxOfY),7
  280   for I=-int(MaxOfY) to int(MaxOfY)
  290     line (10*Dp,I)-(-10*Dp,I),7
  300   next
  310   for X1=-int(MaxOfX/Dp) to int(MaxOfX/Dp) step Dwidth
  320   for Y1=-int(MaxOfY/Dp) to int(MaxOfY/Dp) step Dwidth
  330   X=X1*Dp
  340   Y=Y1*Dp
  350         '***************************************
  360         Z=val(F$)
  370         if Z>0 then pset (X,Y),1 else pset (X,Y),4
  380         Y=Y+Dp*Dwidth:UpperZ=val(F$)
  390         X=X-Dp*Dwidth:Y=Y1*Dp:LeftZ=val(F$)
  400         if Z*UpperZ<=0 or Z*LeftZ<=0 then pset (X,Y),7
  410         '***************************************
  420   next
  430   next
  440   locate 1,1
  450   print "M:座標の大きさ変更, D:ドットの細かさ変更, Q: 終了"
  460   A$=upper(input$(1))
  470   if A$="Q" then end
  480   if A$="M" then
  490   :input "Max of x  ( 0 -> end)";MaxOfX
  500   :if MaxOfX<=0 then end else goto 180
  510   :endif
  520   if A$="D" then
  530   :print "何ドットずつにしますか"
  540   :input Dwidth
  550   :Dwidth=int(Dwidth)
  560   :goto 180
  570   :endif
  580   goto 440