Skip to content

Latest commit

 

History

History
206 lines (152 loc) · 8.42 KB

circle.md

File metadata and controls

206 lines (152 loc) · 8.42 KB
                          C I R C L E 
                                           
      
      Met  het CIRCLE  commando in BASIC kunt u heel wat meer doen 
      dan simpele  cirkeltjes tekenen.  In dit  artikel zal  ik de 
      volledige  syntax  behandelen  en  twee  eenvoudige listings 
      bespreken die gebruik maken van het CIRCLE commando.
      
      
                              S Y N T A X 
      
      De volledige offici�le syntax van het CIRCLE commando luidt:
      
      CIRCLE  [STEP] (x co�rdinaat middelpunt,y co�rdinaat middel- 
      punt), straal, [kleur], [beginhoek], [eindhoek], [hoogte/
      breedte verhouding]
      
      x en y co�rdinaten middelpunt tussen -32768 en +32767
      straal tussen -32768 en +32767
      kleur afhankelijk van SCREEN: 0-15  in SCREEN 2,3,4,5,7,10
                                    0-3   in SCREEN 6
                                    0-255 in SCREEN 8,11,12
      
      Dit was  al wel bekend neem ik aan. Voordat ik verder ga met 
      de  beginhoek en  eindhoek, moet ik eerst even uitleggen wat 
      radialen zijn.
      
      
                            R A D I A L E N 
      
      Iedereen kent  het getal  pi wel, 3.1415926... Pi is precies 
      de  omtrek van  een cirkel  met diameter 1. Stel je hebt een 
      molen  waarvan  de  wieken  precies  1  meter lang  zijn, de 
      diameter van de wieken samen is dan dus 2 meter en de omtrek 
      van de  cirkel die de wieken 'in de lucht tekenen' is gelijk 
      aan  2pi.  Als  een wiek  een heel  rondje draait,  legt het 
      uiterste puntje dus een afstand van precies 2pi af.
      
      In  plaats van  dat je  zegt dat hij 360 graden is gedraaid, 
      kun je  ook spreken  van een  draaiing van 2pi radialen. 180 
      graden  komt overeen  met pi, 90 graden met 1/2pi, 45 graden 
      met 1/4pi, etc. In het algemeen geldt de volgende formule:
      
      <hoek in rad> = <hoek in graden> * pi / 180
      
      Bij wis-  en natuurkunde  worden hoeken  meestal in radialen 
      uitgedrukt,  en de  meeste rekenmachines  met goniometrische 
      functies  (sin,  cos,  tan)  kunnen  behalve  graden ook  in 
      radialen werken.
      
      We  hebben  deze  kennis  nodig,  omdat de  beginhoek en  de 
      eindhoek  bij het  CIRCLE commando in radialen moeten worden 
      opgegeven. Oh  ja, iets  wat je ook nog nodig hebt is dat de 
      stand  van de  kleine wijzer om 3 uur overeen komt met 0, om 
      12 uur met 1/2 pi, om 9 uur met pi en om 6 uur met 1.5 pi.
      
      
                  B E G I N -   E N   E I N D H O E K 
      
      Je hoeft met het CIRCLE commando niet per se een hele cirkel 
      te tekenen, ook een gedeelte is mogelijk. Hiervoor gebruiken 
      we  de  begin-  en  eindhoeken. Voor  beiden kan  een waarde 
      tussen 0 en 2pi worden ingevuld.
      
      Je kunt  in BASIC  pi overigens  zeer eenvoudig met een voor 
      BASIC maximale nauwkeurigheid verkrijgen met
      
      PI=4*ATN(1)
      
      (de ArcTaNgens van 1 is immers gelijk aan 1/4 pi)
      
      We  kunnen dus  bijvoorbeeld alleen het stuk "van twaalf tot 
      drie uur" tekenen met:
      
      CIRCLE (100,100),50,,0,PI/2
      
      
                             S T R A L E N 
      
      Het CIRCLE  commando kan  echter nog meer! Door een minteken 
      voor de hoek te zetten, zal hij namelijk het uiteinde van de 
      cirkelboog  verbinden met het middelpunt door een lijn (zo'n 
      lijn heet dan een straal). Zo kunnen we dus een soort pacman 
      met bek naar rechts tekenen met:
      
      CIRCLE (100,100),50,,-PI/4,-7*PI/4
      
      En door  voor begin- en eindhoek hetzelfde getal op te geven 
      krijgen  we alleen  nog maar  de lijn! Dit gebruiken we voor 
      een eenvoudig  programma om  cirkeldiagrammen oftewel taart- 
      diagrammen te tekenen.
      
      
                        T A A R T D I A G R A M 
      
      100 ' TAART.BAS
      110 ' Taartdiagram met CIRCLE commando
      120 ' Door Stefan Boer
      130 ' Sunrise Special #4
      140 ' (c) Stichting Sunrise 1993
      150 '
      160 KEYOFF:SCREEN0:WIDTH80:COLOR15,0,0
      170 DIMX(29)
      180 PRINT"Taartdiagram":PRINT
      190 PRINT"Voer de gegevens in, 0 om af te sluiten:":PRINT
      200 INPUTX(N):IFX(N)<>0ANDN<29THENT=T+X(N):N=N+1:GOTO200
      210 PI=4*ATN(1):H=-2*PI:N=N-1
      220 SCREEN5
      230 CIRCLE(128,106),100
      240 FORI=0TON
      250 CIRCLE(128,106),100,,H,H
      260 H=H+X(I)*2*PI/T
      270 NEXT
      280 GOTO280
      
      Een overzicht van de gebruikte variabelen:
      
      X(0)...X(29)    de waardes bij 'part' 0 t/m 29
      N               aantal parten
      T               totale waarde van parten
      PI              3.1415926...
      H               hoek
      I               lusteller
      
      De  werking is  vrij eenvoudig. We beginnen bij een hoek van 
      -2pi en tellen vervolgens telkens
                     
                      2PI
                 X(I) ---
                       T
      
      bij de hoek op, dat is namelijk precies de hoek van part I.
      
      
                      H O O G T E / B R E E D T E 
      
      Normaal gesproken  tekent de  computer een cirkel waarvan de 
      hoogte  en de  breedte twee keer zoveel pixels tellen als de 
      straal.  Zo'n   cirkel  is  echter  (zeker  in  SCREEN  6/7) 
      nauwelijks  rond te  noemen, en  bovendien wil je soms juist 
      een  ovaal  hebben.  Daarvoor  is de  laatste parameter,  de 
      hoogte/breedte  verhouding.  Hiervoor  kan  een  willekeurig 
      positief getal worden ingevuld.
      
      Als dit getal kleiner is dan 1, dan wordt de hoogte met deze 
      verhouding vermenigvuldigd.  Is het  groter dan 1, dan wordt 
      de breedte door de verhouding gedeeld.
      
      Bij 50 Hz kunt u de volgende waardes gebruiken om cirkels te 
      krijgen die mooi rond zijn:
      
      SCREEN          hoogte/breedte verhouding
      
      2,3,4           1.4
      5,8,10,11,12    1.36
      6,7             0.68
      
      
                 C I R K E L   I N   R E C H T H O E K 
      
      We  kunnen  de  hoogte/breedte  verhouding gebruiken  om een 
      routine te programmeren die een cirkel tekent die precies in 
      een  rechthoek  past.  Hierbij  moet  wel  even goed  worden 
      nagedacht,  want  je  doet  heel snel  iets verkeerdom.  Het 
      uiteindelijke resultaat is onderstaande listing.
      
      100 ' CIRKEL.BAS
      110 ' Tekent cirkel precies in rechthoek
      120 ' Door Stefan Boer
      130 ' Sunrise Special #4
      140 ' (c) Stichting Sunrise 1993
      150 '
      160 KEYOFF:SCREEN0:WIDTH80:COLOR15,0,0
      170 PRINT"Cirkel in rechthoek":PRINT
      180 INPUT"X1 ";X1
      190 INPUT"Y1 ";Y1
      200 INPUT"X2 ";X2
      210 INPUT"Y2 ";Y2
      220 SCREEN5
      230 LINE(X1,Y1)-(X2,Y2),8,B
      240 XS=ABS(X1-X2):YS=ABS(Y1-Y2)
      250 XC=(X1+X2)/2:YC=(Y1+Y2)/2
      260 V=YS/XS:IFV<1THENR=ABS(XC-X1)ELSER=ABS(YC-Y1)
      270 CIRCLE(XC,YC),R,,,,V
      280 GOTO280
      
      De gebruikte variabelen weer op een rij:
      
      X1,Y1   coordinaten van hoekpunt rechthoek
      X2,Y2   coordinaten van andere hoekpunt
      XS      breedte van rechthoek
      YS      hoogte van rechthoek
      XC,YC   coordinaten van middelpunt
      V       hoogte/breedte verhouding
      R       straal
      
      
                           T E N S L O T T E 
      
      Er  kunnen  met  cirkels zeer  mooie figuren  op het  scherm 
      worden  getoverd, maar  dat laat  ik graag  aan uw  fantasie 
      over. De  theorie kan  nu in  ieder geval  het probleem niet 
      meer zijn.
      
                                                      Stefan Boer