MODULE Ster20op20; (* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! VIAENE SOPHIE ROLNR 93690 FYSICA ZET JE NAAM HIER !!!!!!!!!!!!!!!!!!!!!!!!!!!!! *) <* WOFF + *> <* NOOPTIMIZE + *> FROM IO IMPORT RdChar, WrChar, WrStr, RdStr, WrLn, RdLn, RdCard, WrCard, RdInt, WrInt, RdReal, WrReal, WrFixReal, RdBool, WrBool, RdKey, KeyPressed; FROM RealMath IMPORT sqrt, exp, sin, cos, tan, arcsin, arccos, arctan, power, round, pi; FROM Lib IMPORT Delay; (* Wait n milliseconds *) FROM Graph IMPORT Init, Line, Rectangle, Circle, Disc, Polygon, RawOutText, _clrBLACK, _clrBLUE, _clrGREEN, _clrCYAN, _clrRED, _clrMAGENTA; FROM Graph IMPORT _clrBROWN, _clrWHITE, _clrGRAY, _clrLIGHTBLUE, _clrLIGHTGREEN, _clrLIGHTCYAN, _clrLIGHTRED, _clrLIGHTMAGENTA, _clrLIGHTYELLOW, _clrBRIGHTWHITE; CONST K = 1000; PROCEDURE Tekenvierkant (xmiddelpunt, ymiddelpunt, straal,beginhoek:REAL;kleur:CARDINAL); VAR xpunt1,ypunt1,xpunt2,ypunt2:REAL; xpunt3,ypunt3,xpunt4,ypunt4:REAL; BEGIN (*hoekpunten eerste vierkant*) xpunt1:=xmiddelpunt + cos(beginhoek) * straal; ypunt1:=ymiddelpunt + sin(beginhoek) * straal; xpunt2:=xmiddelpunt + cos(beginhoek+pi/2.0) * straal; ypunt2:=ymiddelpunt + sin(beginhoek+pi/2.0) * straal; xpunt3:=xmiddelpunt + cos(beginhoek+pi) * straal; ypunt3:=ymiddelpunt + sin(beginhoek+pi) * straal; xpunt4:=xmiddelpunt + cos(beginhoek+3.0*pi/2.0) * straal; ypunt4:=ymiddelpunt + sin(beginhoek+3.0*pi/2.0) * straal; Line(VAL(CARDINAL,xpunt1),VAL(CARDINAL,ypunt1),VAL(CARDINAL,xpunt2),VAL(CARDINAL,ypunt2),kleur); Line(VAL(CARDINAL,xpunt2),VAL(CARDINAL,ypunt2),VAL(CARDINAL,xpunt3),VAL(CARDINAL,ypunt3),kleur); Line(VAL(CARDINAL,xpunt3),VAL(CARDINAL,ypunt3),VAL(CARDINAL,xpunt4),VAL(CARDINAL,ypunt4),kleur); Line(VAL(CARDINAL,xpunt4),VAL(CARDINAL,ypunt4),VAL(CARDINAL,xpunt1),VAL(CARDINAL,ypunt1),kleur); END Tekenvierkant; PROCEDURE TekenSter (xmiddelpunt, ymiddelpunt, straal,hoek:REAL;aantalVierkanten,kleur:CARDINAL); VAR k:CARDINAL; beginhoek:REAL; BEGIN FOR k:=1 TO aantalVierkanten DO beginhoek:=hoek+pi/2.0*VAL(REAL,k)/VAL(REAL,aantalVierkanten); Tekenvierkant(xmiddelpunt,ymiddelpunt,straal,beginhoek,kleur); END (*FOR*) END TekenSter; (* Vraag 1 *) (* Zet de procedure definities en oproep hier tussen commentaar PROCEDURE Tekenbol(x,y,z,r:CARDINAL) TekenBol(middelpuntx,middelpunty,middelpuntz,straal); PROCEDURE BerekenOppervlakte (x,y:CARDINAL):CARDINAL; Oppervlakte:= BerekenOppervlakte(breedte,hoogte); *) VAR k: CHAR; (* variable-declarations *) i,macht,aantal:CARDINAL; xmiddelpunt,ymiddelpunt,straal,hoek:REAL; BEGIN (* Vraag 2 *) macht:= 2; REPEAT WrCard(macht,0); WrStr(";"); macht:=macht*2; UNTIL macht >= K ; WrLn; (* Vraag 3 *) IF NOT Init(1, 1 , 800, 800) THEN WrStr("Sorry, graphics doesn't work");WrLn; RETURN; END; straal:=100.0; xmiddelpunt:=400.0; ymiddelpunt:=200.0; aantal:=2; hoek:=0.0; TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,2); Delay(1000); TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,0); (*Het getal 2 is een kleurwaarde*) (* Vraag 4 *) (*De delay dient om vlot de verschillende uitkomsten te kunnen laten zien*) aantal:=3; TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,2); Delay(1000); TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,0); aantal:=4; TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,2); Delay(1000); TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,0); (* Vraag 5 *) WrStr("Geef het aantal verschillende vierkanten waaruit een ster opgebouwd is"); aantal:=RdCard(); FOR i:=0 TO 360 DO hoek:=VAL(REAL,i)*pi/180.0; TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,2); Delay(20); TekenSter(xmiddelpunt,ymiddelpunt,straal,hoek,aantal,0); END (*FOR*); (* Toon graphics tot de gebruiker een Enter drukt *) WrStr("Druk op een toets om het programma te stoppen"); k:= RdKey(); WrLn; END Ster20op20.