Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
mathe:konstruktion:sprache [2008/01/11 21:54] admin |
mathe:konstruktion:sprache [2011/02/14 16:35] (aktuell) admin |
||
---|---|---|---|
Zeile 10: | Zeile 10: | ||
Zu den gültig definierten Objekten gehören Zahlen, Zeichenketten in (doppelten) Anführungszeichen, Objekte, die weiter unten noch einzeln aufgeführt werden und Listen daraus. Listen werden in geschweiften Klammern notiert. Elemente von Listen oder Parameterlisten werden durch Kommata getrennt. | Zu den gültig definierten Objekten gehören Zahlen, Zeichenketten in (doppelten) Anführungszeichen, Objekte, die weiter unten noch einzeln aufgeführt werden und Listen daraus. Listen werden in geschweiften Klammern notiert. Elemente von Listen oder Parameterlisten werden durch Kommata getrennt. | ||
- | Zahlen haben das in Programmiersprachen übliche Format (Dezimalpunkt, Zehnerexponent mit e), dürfen aber der Bequemlichkeit mit ''°'' enden, was einer Multiplikation mit ¿/180 entspricht. Dies verwendet man üblicherweise bei Winkeln, das sind Zahlen, die mit ''<'' beginnen. | + | Zahlen haben das in Programmiersprachen übliche Format (Dezimalpunkt, Zehnerexponent mit e), dürfen aber der Bequemlichkeit mit ''°'' enden, was einer Multiplikation mit π/180 entspricht. Dies verwendet man üblicherweise bei Winkeln, das sind Zahlen, die mit ''<'' beginnen. |
Eine gültige (wenn auch völlig sinnlose) Konstruktionsbeschreibung zeigt folgendes Beispiel: | Eine gültige (wenn auch völlig sinnlose) Konstruktionsbeschreibung zeigt folgendes Beispiel: | ||
Zeile 60: | Zeile 60: | ||
* ''Kreis(P,r)'' ist ein Kreis um den Punkt ''P'' und dem Radius der Länge ''r''. | * ''Kreis(P,r)'' ist ein Kreis um den Punkt ''P'' und dem Radius der Länge ''r''. | ||
* ''Kreis(A,B)'' ist ein Kreis um den Mittelpunkt ''A'' durch den Punkt ''B''. | * ''Kreis(A,B)'' ist ein Kreis um den Mittelpunkt ''A'' durch den Punkt ''B''. | ||
- | * ''Lot(g,P)'' ist das Lot auf die Gerade ''g'', das durch den Punkt ''P'' geht. Die Richtung des Lotes erhält man aus der Richtung von ''g'', indem man diese um 90° gegen den Uhrzeigersinn dreht. | + | * ''Lot(g,P)'' ist das Lot auf die Gerade ''g'', das durch den Punkt ''P'' geht. Die Richtung des Lotes erhält man aus der Richtung von ''g'', indem man diese um 90° gegen den Uhrzeigersinn dreht. |
* ''Mittelpunkt(P,Q)'' ist der Mittelpunkt zwischen den beiden Punkte ''P'' und ''Q''. | * ''Mittelpunkt(P,Q)'' ist der Mittelpunkt zwischen den beiden Punkte ''P'' und ''Q''. | ||
- | * ''Mittelsenkrechte(P,Q)'' ist die Mittelsenkrechte zwischen den beiden Punkten ''P'' und ''Q''. Die Richtung der Mittelsenkrechten erhält man, wenn man die Gerade ''PQ'' um 90° gegen den Uhrzeigersinn dreht. | + | * ''Mittelsenkrechte(P,Q)'' ist die Mittelsenkrechte zwischen den beiden Punkten ''P'' und ''Q''. Die Richtung der Mittelsenkrechten erhält man, wenn man die Gerade ''PQ'' um 90° gegen den Uhrzeigersinn dreht. |
- | * li>''Parallele(g,P)'' ist eine Parallele zur Geraden ''g'' durch den Punkt ''P''. Die Parallele hat die gleiche Richtung wie ''g''. | + | * ''Parallele(g,P)'' ist eine Parallele zur Geraden ''g'' durch den Punkt ''P''. Die Parallele hat die gleiche Richtung wie ''g''. |
* ''Parallele(g,d)'' ist eine Parallele zur Geraden ''g'' im Abstand ''d''. Der Abstand ist eine Länge. Bei positiven Werten befindet sich die Parallele links von ''g'', sonst rechts. | * ''Parallele(g,d)'' ist eine Parallele zur Geraden ''g'' im Abstand ''d''. Der Abstand ist eine Länge. Bei positiven Werten befindet sich die Parallele links von ''g'', sonst rechts. | ||
* ''Punkt(x,y)'' ist ein Punkt mit den Koordinaten ''x'', ''y''. Alle Argumente sind Längen. | * ''Punkt(x,y)'' ist ein Punkt mit den Koordinaten ''x'', ''y''. Alle Argumente sind Längen. | ||
Zeile 88: | Zeile 88: | ||
* Die Hints haben üblicherweise die Form ''Hintname:wirksamesObjekt''. Der ''Hintname'' sagt aus, worauf ''wirksamesObjekt'' Einfluss nimmt. Wie Hintname lauten muss, ist unten jeweils aufgeführt.. | * Die Hints haben üblicherweise die Form ''Hintname:wirksamesObjekt''. Der ''Hintname'' sagt aus, worauf ''wirksamesObjekt'' Einfluss nimmt. Wie Hintname lauten muss, ist unten jeweils aufgeführt.. | ||
* Manche Hints braucht man so oft, dass die Angabe des Hintnamens unangenehm wird. Diese besonderen Hints dürfen dann auch ohne Hintname (und ohne Doppelpunkt) angegeben werden. Sie werden allein auf Grund des Typs von ''wirksamesObjekt'' erkannt. | * Manche Hints braucht man so oft, dass die Angabe des Hintnamens unangenehm wird. Diese besonderen Hints dürfen dann auch ohne Hintname (und ohne Doppelpunkt) angegeben werden. Sie werden allein auf Grund des Typs von ''wirksamesObjekt'' erkannt. | ||
- | * Wenn in der Liste der Hints irgendetwas nicht zusammenpasst, wird der Hint ignoriert und so verfahren, als wäre er nicht genannt worden. So ist z.B. der Hint ''Strichfarbe:"blau"'' ein sinnloser Hint, weil nach dem Doppelpunkt statt eines Strings eine Farbe definiert werden müsste, also etwa ''Strichfarbe:Farbe(0,0,1)'' oder ''Strichfarbe:_blau''. Die Darstellung erfolgt in diesem Fall aber ohne Fehlermeldung in der Standardfarbe. | + | * Wenn in der Liste der Hints irgendetwas nicht zusammenpasst, wird der Hint ignoriert und so verfahren, als wäre er nicht genannt worden. So ist z.B. der Hint ''Strichfarbe:"blau"'' ein sinnloser Hint, weil nach dem Doppelpunkt statt eines Strings eine Farbe definiert werden müsste, also etwa ''Strichfarbe:Farbe(0,0,1)'' oder ''Strichfarbe:_blau''. Die Darstellung erfolgt in diesem Fall aber ohne Fehlermeldung in der Standardfarbe. |
* Es besteht keine Gefahr der Kollision von Hintnamen mit selber definierten Namen. Hintnamen werden gesondert erkannt. Nach dem Doppelpunkt werden vernünftigerweise selber definierte Namen als solche erkannt. Die Angabe ''Strichfarbe:blau'' ist also sinnvoll, wenn vorher irgendwo definiert wurde ''blau=Farbe(...)''. | * Es besteht keine Gefahr der Kollision von Hintnamen mit selber definierten Namen. Hintnamen werden gesondert erkannt. Nach dem Doppelpunkt werden vernünftigerweise selber definierte Namen als solche erkannt. Die Angabe ''Strichfarbe:blau'' ist also sinnvoll, wenn vorher irgendwo definiert wurde ''blau=Farbe(...)''. | ||
* ''Farbe(r,g,b)'' Farbe mit den drei Anteilen für Rot, Grün und Blau. Die einzelnen Werte müssen Zahlen zwischen 0 und 1 sein. Je größer die Werte sind, desto heller ist die Farbe. Sind alle drei Werte 1, ist die Farbe Weiß gemeint. (Ohne Angabe der Farbe wird stets schwarz verwendet. Bereits definiert sind die unten genannten Farben.) | * ''Farbe(r,g,b)'' Farbe mit den drei Anteilen für Rot, Grün und Blau. Die einzelnen Werte müssen Zahlen zwischen 0 und 1 sein. Je größer die Werte sind, desto heller ist die Farbe. Sind alle drei Werte 1, ist die Farbe Weiß gemeint. (Ohne Angabe der Farbe wird stets schwarz verwendet. Bereits definiert sind die unten genannten Farben.) | ||
Zeile 103: | Zeile 103: | ||
* Beispiel: Sei ''A=Punkt(10,1)'' Dann bewirkt ''Anzeige(A,A,{"(%0 #.##%|%1 #.##%)",dx:10,Stiftfarbe:Farbe(1,0,0),Hintergrund:Farbe(0,1,0)})'' die Anzeige der Koordinaten des Punktes ''A'' in einer Entfernung von 10 Pixeln rechts von ''A'' in etwa folgender Weise: (1,13|-2,2) | * Beispiel: Sei ''A=Punkt(10,1)'' Dann bewirkt ''Anzeige(A,A,{"(%0 #.##%|%1 #.##%)",dx:10,Stiftfarbe:Farbe(1,0,0),Hintergrund:Farbe(0,1,0)})'' die Anzeige der Koordinaten des Punktes ''A'' in einer Entfernung von 10 Pixeln rechts von ''A'' in etwa folgender Weise: (1,13|-2,2) | ||
* Ein ''%'' leitet ein Format ein. Danach folgt die Nummer des gewünschten Parameters (im Beispiel 0 bzw. 1). Danach kann die Formatierung angegeben werden. Ein weiteres ''%'' beendet das Format und schaltet auf normale Textwiedergabe. Daraus folgt, dass das Zeichen ''%'' selber nicht darstellbar ist. Deswegen dient es als Fehlermelder: Taucht es in der Ausgabe auf, so heißt das, dass der Formatstring fehlerhaft ist. Verzichtet man ganz auf die Angabe eines Formats, so wird ein Format verwendet, das am besten zum verwendeten Objekt passt. | * Ein ''%'' leitet ein Format ein. Danach folgt die Nummer des gewünschten Parameters (im Beispiel 0 bzw. 1). Danach kann die Formatierung angegeben werden. Ein weiteres ''%'' beendet das Format und schaltet auf normale Textwiedergabe. Daraus folgt, dass das Zeichen ''%'' selber nicht darstellbar ist. Deswegen dient es als Fehlermelder: Taucht es in der Ausgabe auf, so heißt das, dass der Formatstring fehlerhaft ist. Verzichtet man ganz auf die Angabe eines Formats, so wird ein Format verwendet, das am besten zum verwendeten Objekt passt. | ||
- | * Bei eindimensionalen Größen, wie Längen und Winkeln ist Parameter 0 der Wert und Parameter 1 der Wert multipliziert mit 180/¿ (also der Wert in Grad). Dies ist sinnvoll, wenn man Winkel in Grad angeben will. Bei zweidimensionalen Objekten kommt erst die Position 0 für x, 1 für y und dann die Eigenheiten, also bei Kreisen der Radius (2) und bei Geraden der Richtungsvektor (2 und 3) und der Drehwinkel im Bogen- und Gradmaß (4 und 5). Vektoren haben noch als 6. Parameter ihre Länge. | + | * Bei eindimensionalen Größen, wie Längen und Winkeln ist Parameter 0 der Wert und Parameter 1 der Wert multipliziert mit 180/π (also der Wert in Grad). Dies ist sinnvoll, wenn man Winkel in Grad angeben will. Bei zweidimensionalen Objekten kommt erst die Position 0 für x, 1 für y und dann die Eigenheiten, also bei Kreisen der Radius (2) und bei Geraden der Richtungsvektor (2 und 3) und der Drehwinkel im Bogen- und Gradmaß (4 und 5). Vektoren haben noch als 6. Parameter ihre Länge. |
* Gibt man eine zu große Parameternummer an, so erhält man keinen Wert. | * Gibt man eine zu große Parameternummer an, so erhält man keinen Wert. | ||
* ''Anzeige(was,wo)'' wie oben, aber mit Standardwerten für alles was durch Hints definierbar ist. | * ''Anzeige(was,wo)'' wie oben, aber mit Standardwerten für alles was durch Hints definierbar ist. | ||
Zeile 117: | Zeile 117: | ||
Als ''Spitze'' von Linienzügen und Vektoren gibt es ''_keine'' | Als ''Spitze'' von Linienzügen und Vektoren gibt es ''_keine'' | ||
und ''_Pfeil''. | und ''_Pfeil''. | ||
+ |