Punktmengen und Zufallsregen

Das Pascal-Programm "Zufallsregen1" (es wird die Toolbox mkGraph verwendet) erzeugt das nebenstehende Bild.

PROGRAM Zufallsregen1;
USES
  mkGraph;
VAR
  x,y : real;
BEGIN
  Graphik_ein; KoordinatenSystem(-12,12,-9,9);
  xAchse(1,1,0,'x'); yAchse(1,1,0,'y');
  Randomize;
  REPEAT
    x := ZufallX; y := ZufallY;
    SetzePunkt(x,y)
  UNTIL Keypressed;
  Taste; Graphik_aus
END.



Dabei werden in der REPEAT-Schleife bis zu einem Tastendruck x und y zufällig mit Werten aus dem gewählten Koordinatenbereich erzeugt und der entsprechende Punkt gesetzt.
Will man das Setzen des Zufallspunktes von einer Bedingung, z.B. 3x+4y=9 abhängig machen, so entwirft man vielleicht folgendes Programm "Zufallsregen2", das erstaunlicherweise keine Zufallspunkte mehr zeigt.

PROGRAM Zufallsregen2;
USES
  mkGraph;
VAR
  x,y : real;
BEGIN
  Graphik_ein; KoordinatenSystem(-12,12,-9,9);
  xAchse(1,1,0,'x'); yAchse(1,1,0,'y');
  Randomize;
  REPEAT
    x := ZufallX; y := ZufallY;
    IF 3*x+4*y = 9 THEN SetzePunkt(x,y)
  UNTIL Keypressed;
  Taste; Graphik_aus
END.
Bedenkt man, dass eine Gerade - diese Menge wird durch 3x+4y=9 beschrieben - "unendlich dünn" ist, so wird klar, dass die Gerade von keinem "Tropfen" getroffen wurde. Kein einziger Punkt wurde gesetzt. Um Treffer zu erhalten, wird die = - Bedingung "aufgeweicht". Schon bei einem Unterschied von weniger als 0,5 zwischen linker und rechter Seite der Gleichung () soll der Punkt gesetzt werden. Jetzt sieht das Bild so aus:
PROGRAM Zufallsregen3;
USES
  mkGraph;
VAR
  x,y : real;
BEGIN
  Graphik_ein; KoordinatenSystem(-12,12,-9,9);
  xAchse(1,1,0,'x'); yAchse(1,1,0,'y');
  Randomize;
  REPEAT
    x := ZufallX; y := ZufallY;
    IF abs(3*x+4*y - 9) < 0.5
    THEN SetzePunkt(x,y)
  UNTIL Keypressed;
  Taste; Graphik_aus
END.

Die Punktmenge aus Beispiel 2, LS S.171 sieht folgendermaßen aus:
PROGRAM Zufallsregen6;
USES
  mkGraph;
VAR
  x,y : real;
BEGIN
  Graphik_ein; KoordinatenSystem(-12,12,-9,9);
  xAchse(1,1,0,'x'); yAchse(1,1,0,'y');
  Randomize;
  REPEAT
    x := ZufallX; y := ZufallY;
    IF abs(x*x+y*y-14*x+6*y+33 - 0) <= 1
    THEN SetzePunkt(x,y)
  UNTIL Keypressed;
  Punkt(7,-3,'M');
  Taste; Graphik_aus
END.

Aufgaben:
- Erledige LS S. 171/1 am Computer (unter LS171a1a - LS171a1d auf c: abspeichern).
- Bearbeite LS S.172/4a, b und c und überprüfe das Ergebnis mit dem Computer.

Aus Spieltrieb, weil auf dem Blatt noch Platz war:
PROGRAM Zufallsregen8;
USES
  mkGraph;
VAR
  x,y : real;
BEGIN
  Graphik_ein; KoordinatenSystem(-12,12,-9,9);
  xAchse(1,1,0,'x'); yAchse(1,1,0,'y');
  Randomize;
  REPEAT
    x := ZufallX; y := ZufallY;
    IF abs(x*x-y*y-14*x+6*y+33 - 0) <= 1
    THEN SetzePunkt(x,y)
  UNTIL Keypressed;
  Taste; Graphik_aus
END.
   
PROGRAM Zufallsregen9;
USES
  mkGraph;
VAR
  x,y : real;
BEGIN
  Graphik_ein; KoordinatenSystem(-12,12,-9,9);
  xAchse(1,1,0,'x'); yAchse(1,1,0,'y');
  Randomize;
  REPEAT
    x := ZufallX; y := ZufallY;
    IF abs(x*x+y*y*y - 8) <= 1
    THEN SetzePunkt(x,y)
  UNTIL Keypressed;
  Taste; Graphik_aus
END.