{"id":25170158,"url":"https://github.com/liatemplates/ggbscript","last_synced_at":"2025-04-03T20:25:08.684Z","repository":{"id":275808616,"uuid":"927218665","full_name":"LiaTemplates/GGBScript","owner":"LiaTemplates","description":"A simple reimplementation of some functions with GGBScript in javascript for LiaScript","archived":false,"fork":false,"pushed_at":"2025-02-23T21:18:45.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-23T21:20:17.026Z","etag":null,"topics":["geogebra","geometry","liascript","liascript-template","markdown","math","oer"],"latest_commit_sha":null,"homepage":"https://liascript.github.io/course/?https://raw.githubusercontent.com/LiaTemplates/GGBScript/refs/heads/main/README.md","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LiaTemplates.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-04T15:48:47.000Z","updated_at":"2025-02-23T21:18:48.000Z","dependencies_parsed_at":"2025-02-04T18:20:53.823Z","dependency_job_id":"26cd455e-682b-4c71-9efc-5333a27a0a78","html_url":"https://github.com/LiaTemplates/GGBScript","commit_stats":null,"previous_names":["liatemplates/ggbscript"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FGGBScript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FGGBScript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FGGBScript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FGGBScript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LiaTemplates","download_url":"https://codeload.github.com/LiaTemplates/GGBScript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247072403,"owners_count":20878882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geogebra","geometry","liascript","liascript-template","markdown","math","oer"],"created_at":"2025-02-09T08:38:49.101Z","updated_at":"2025-04-03T20:25:08.659Z","avatar_url":"https://github.com/LiaTemplates.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nauthor:  André Dietrich; ChatGPT\n\ncomment: Dieses Dokument wurde mithilfe von ChatGPT erstellt und enthält eine experimentelle Version eines GGBScript JavaScript-Interpreters für LiaScript.\n\nscript:   src/index.js\n\n@GGBScript\n\u003cscript modify=\"//-XXXX-\\n\" run-once style=\"display: block; background: #f9f9f9; padding: 1rem; border: 1px solid #ddd; margin-top: 1rem\"\u003e\nfunction render () {\n    console.log(\"GGBScript\", window.GGBScript)\n    if (!window.GGBScript) {\n        setTimeout(render, 100);\n        return\n    }\n\n\n    let code = `//-XXXX-\n@0//-XXXX-\n`\n\n    send.lia(`HTML: \u003clia-chart style=\"margin-top: 2rem\" option='${window.GGBScript(code)}'\u003e\u003c/lia-chart\u003e`)\n    send.lia(\"LIA: stop\")\n}\n\nsetTimeout(render, window.GGBScript ? 10 : 200)\n\n\"LIA: wait\"\n\u003c/script\u003e\n@end\n\n--\u003e\n\n# GGBScript\n\nDies ist ein GGBScript JavaScript interpreter für LiaScript.\nEs handelt sich um eine experimentelle Version, die noch nicht vollständig ist und mithilfe von ChatGPT entwickelt wurde.\n\nUm die Funktionalität in ein LiaScript-Dokument einzubinden, fügen Sie den folgenden Code ein:\n\n`import: https://raw.githubusercontent.com/LiaTemplates/GGBScript/refs/heads/main/README.md`\n\nDas folgende Beispiel zeigt wie dies funktioniert:\n\n[LiveEditor](https://liascript.github.io/LiveEditor/?/show/code/H4sIAAAAAAAAA62T0W6bMBSG7/0UnndDJIiBqamahajAul60SKjt7nETN/EGBtmHrXurPUOfbMYsCVVpJ0W9wueH//98DjqLD56HRNXUCuZ4C9DoOaWK/ZpuBGzb+1ZztaolcAnTVV3Ra8HueNWUDLiml5fJ7UqJBqjiD5puOVtrWjEh6c1F/CW7mFZr5HlLhD7ijMEWoRhH2Flo68FCNi1ERDG54QRXQkbEN0/2GJHAN6efrGx5RE7MUQNvjErwmj+wtoRerVuwCbFPlujcxqEF7dOXLnqD41nAMahgBIUmCCVHdHY2G8N16g6XvFdn4ekYqlP3qNc6Q+kRrYWjkwwHk0zfrbX/o15r7aYGBqKWc/wWdwf9NDtAR5kDpPqXPAJ++mNmWhQF/q7x+X6D0DezaPGj0NeiEqAd3w1OfNd3Z/7kM0JmAzXgbnvyVv4Ap890itgvJi7eV0FXkZgYS+9IXjiSZ46kdyQHR/rCkT5zpL0jJYdr5Z2lLn9vaukYuM3bf/KVqXvu5KZWfD0wZcaUCQBeNpaWD/JC8273azprdsDv5movkYcDRFcZbaM4l1a+Ulxox3iDmdFt1elm8n8B100U+PMEAAA=)\n\nSchauen Sie sich das Dokument im LiaScript modus an:\n\n[LiaScript](https://liascript.github.io/course/?https://raw.githubusercontent.com/LiaTemplates/GGBScript/refs/heads/main/README.md)\n\nDurch Doppelklick auf die Grafik können Sie den Code bearbeiten und die Änderungen werden sofort angezeigt.\n\n## Punkt\n\n``` js @GGBScript\nTitel(\"Punkt A \u0026 B\");\n\n// Definiere einen Punkt\nconst A = Punkt(1, 2, \"A\");\nconst B = Punkt([4, 6], \"B\");\n```\n\n## Gerade\n\n1. `Gerade( Punkt, Punkt )`\n\n   Erzeugt eine Gerade durch zwei Punkte.\n\n   ``` js @GGBScript\n   Titel(\"Gerade g\");\n\n   // Definiere Punkte\n   const A = Punkt(1, 2, \"A\");\n   const B = Punkt(4, 6, \"B\");\n\n   // Erzeuge eine Gerade\n   const g = Gerade(A, B, \"g\");\n   ```\n\n2. `Gerade( Punkt, Gerade )`\n\n   Erzeugt eine Gerade durch einen Punkt und eine Gerade.\n\n   ``` js @GGBScript\n   Titel(\"Gerade g1 \u0026 g2\");\n\n   // Definiere Punkte\n   const A = Punkt(1, 2, \"A\");\n   const B = Punkt(4, 6, \"B\");\n   const C = Punkt(0, 5, \"C\");\n\n   // Erzeuge zwei Geraden\n   const g1 = Gerade(A, B, \"g1\");\n   const g2 = Gerade(C, g1, \"g2\");\n   ```\n\n## Strecke\n\n1. `Strecke( Punkt, Punkt )`\n\n   Erzeugt eine Strecke zwischen zwei Punkten.\n\n   ``` js @GGBScript\n   Titel(\"Strecke S\");\n\n   // Definiere Punkte\n   const A = Punkt(1, 2, \"A\");\n   const B = Punkt(4, 6, \"B\");\n\n   // Erzeuge eine Strecke\n   const S = Strecke(A, B, \"S\");\n   ```\n\n2. `Strecke( Punkt, Länge )`\n\n   Erzeugt eine Strecke mit einer bestimmten Länge.\n\n   ``` js @GGBScript\n   Titel(\"Strecke s1 \u0026 s2 \u0026 s3\");\n\n   // Definiere Punkte\n   const A = Punkt(1, 2, \"A\");\n   const B = Punkt(4, 6, \"B\");\n\n   // Erzeuge zwei Strecken\n   const s1 = Strecke(A, 2, \"s1\");\n   const s2 = Strecke(B, 3, \"s2\");\n   const s3 = Strecke([1,1], 3, \"s3\");\n   ```\n\n## Vektor \n\n1. `Vektor( Punkt )`\n\n``` js @GGBScript\n\nTitel(\"Vektor V1\");\n\n// Definiere einen Punkt\nconst A = Punkt(1, 2, \"A\");\n\n// Erzeuge einen Vektor\nconst V1 = Vektor(A, \"V1\");\nconst V2 = Vektor([-1,2]);\n```\n\n2. `Vektor( Punkt, Punkt )`\n\n``` js @GGBScript\nTitel(\"Vektor V\");\n\n// Definiere Punkte\nconst A = Punkt(1, 2, \"A\");\nconst B = Punkt(4, 6, \"B\");\n\n// Erzeuge einen Vektor\nconst V = Vektor(A, B, \"V\");\n```\n\n## Vieleck\n\n``` js @GGBScript\nTitel(\"Vieleck V\");\n\n// Definiere Punkte\nconst A = Punkt(1, 2, \"A\");\nconst B = Punkt(4, 6, \"B\");\nconst C = Punkt(2, 5, \"C\");\n\n// Erzeuge ein Vieleck\nconst V = Vieleck(A, B, C);\n```\n\n``` js @GGBScript\nTitel(\"Vieleck V2\");\n\n// Hier ist (1,1) der Mittelpunkt und (4,1) ein Punkt auf dem Umfang;\n// 6 gibt die Anzahl der Ecken an.\nVieleck([1, 1], [4, 1], 8);\n```\n\n``` js @GGBScript\nVieleck([2,2], [5,2], 5, [0,1]);\n```\n\n``` js @GGBScript\nDiagramm(false)\nconst V = Vieleck([1, 1], [3, 0], [3, 2], [0, 4]);\n\nRotation(V, [1, 1], 45);\n```\n\n## Polygon\n\n``` js @GGBScript\nTitel(\"Polygon P\");\n\n// Definiere Punkte\nconst A = Punkt(1, 2, \"A\");\nconst B = Punkt(4, 6, \"B\");\nconst C = Punkt(2, 5, \"C\");\n\n// Erzeuge ein Polygon\nconst P = Polygon(A, B, C);\n```\n\n## Kreis\n\n1. Kreis mit festem Radius `Kreis(\"Mittelpunkt\", 5)`\n\n``` js @GGBScript\nTitel(\"Kreis K\")\nUserAxisLimits(-2.5, 5, 0, 3)\n\n// Definiere einen Punkt\nconst A = Punkt(1.5, 1.5, \"A\")\n\n// Erzeuge einen Kreis\nconst K = Kreis(A, 1, \"K\")\n```\n\n2. Kreis mit Radius einer Strecke `Kreis(\"M\", \"Strecke1\")`\n\n``` js @GGBScript\nTitel(\"Kreis K2\")\nUserAxisLimits(-2.5, 5, 0, 3)\n\n// Definiere Punkte\nconst A = Punkt(1, 1, \"A\")\nconst B = Punkt(3, 2, \"B\")\n\n// Erzeuge eine Strecke\nconst S = Strecke(A, B, \"Strecke1\")\n\n// Erzeuge einen Kreis\nconst K2 = Kreis(A, S, \"K2\")\n```\n\n3. Kreis mit Radius aus Abstand zweier Punkte `Kreis(\"M\", \"P2\")`\n\n``` js @GGBScript\nTitel(\"Kreis K3\")\nUserAxisLimits(-2.5, 5, 0, 3)\n\n// Definiere Punkte\nconst A = Punkt(1, 1, \"A\")\nconst B = Punkt(3, 2, \"B\")\n\n// Erzeuge einen Kreis\nconst K3 = Kreis(A, B, \"K3\")\n```\n\n4. Kreis durch drei Punkte `Kreis(\"A\", \"B\", \"C\")`\n\n``` js @GGBScript\nTitel(\"Kreis K4\")\nUserAxisLimits(-2.5, 5, 0, 3)\n\n// Definiere Punkte\nconst A = Punkt(1, 1, \"A\")\nconst B = Punkt(3, 2, \"B\")\nconst C = Punkt(2, 3, \"C\")\n\n// Erzeuge einen Kreis\nKreis(\"A\", \"B\", \"C\");\n```\n\n\n5. Kreis mit Richtung einer Geraden `Kreis(\"M\", 5, \"Gerade1\")`\n\n``` js @GGBScript\nTitel(\"Kreis K5\")\nUserAxisLimits(-2.5, 5, 0, 3)\n\n// Definiere Punkte\nconst A = Punkt(1, 1, \"A\")\nconst B = Punkt(3, 2, \"B\")\n\n// Erzeuge eine Gerade\nconst G = Gerade(A, B, \"Gerade1\")\n\n// Erzeuge einen Kreis\nKreis(\"A\", 1, \"Gerade1\");\n```\n\n6. Kreis mit Richtung eines Vektors `Kreis(\"M\", 5, \"Vektor1\")`\n\n   ``` js @GGBScript\n   Titel(\"Kreis K6\")\n   UserAxisLimits(-2.5, 5, 0, 3)\n\n   // Definiere Punkte\n   const A = Punkt(1, 1, \"A\")\n   const B = Punkt(3, 2, \"B\")\n\n   // Erzeuge einen Vektor\n   const V = Vektor(A, B, \"Vektor1\")\n\n   // Erzeuge einen Kreis\n   Kreis(\"A\", 1, \"Vektor1\");\n   ```\n\n## Ellipse\n\n1. Ellipse mit festem Radius `Ellipse(\"Mittelpunkt\", 5, 3)`\n\n``` js @GGBScript\nTitel(\"Ellipse E\")\n// UserAxisLimits(-2.5, 5, 0, 3)\n// Definiert einen Mittelpunkt \"M1\"\nPunkt(0, 0, \"M1\");\n// Erzeugt eine Ellipse mit Mittelpunkt \"M1\", horizontaler Halbachse 5, vertikaler Halbachse 3 und Rotation 30°:\nEllipse(\"M1\", 5, 3);\n```\n\n\n## Verschiebung\n\n``` js @GGBScript\nTitel(\"Verschiebung\");\n\n// Definiere einen Punkt\nconst A = Punkt(1, 2, \"A\");\n\n// Verschiebe den Punkt\nconst B = Verschiebung(A, 2, 3, \"B\");\n```\n\n---\n\nx = \u003cscript input=\"range\" min=\"0\" max=\"100\" value=\"5\" step=\"1\" default=\"5\" output=\"x\"\u003e\n@input\n\u003c/script\u003e\\\ny = \u003cscript input=\"range\" min=\"-100\" max=\"100\" value=\"5\" step=\"1\" default=\"5\" output=\"y\"\u003e\n@input\n\u003c/script\u003e\n\n\n``` js @GGBScript\nTitel(\"Verschiebung 2\");\n\n// Definiere Punkte\nconst A = Punkt(1, 2, \"A\");\nconst B = Punkt(4, 6, \"B\");\nconst C = Punkt(2, 5, \"C\");\n\n// Erzeuge ein Polygon\nconst P = Polygon(A, B, C);\n\n// Verschiebe das Polygon\nconst P2 = Verschiebung(P, @input(`x`), @input(`y`), \"P2\");\n\nFarbe(P2, \"lightblue\");\n```\n\n## Parallele\n\n``` js @GGBScript\n// Definiere Punkte\nlet A = Punkt(1, 2, \"A\");\nlet B = Punkt(4, 6, \"B\");\nlet C = Punkt(2, 5, \"C\");\n\n// Erzeuge eine Gerade\nlet g = Gerade(A, B, \"g\");\n\n// Erzeuge eine Parallele\nlet p = Parallele(C, g, \"p\");\n```\n\n## Mittelpunkt\n\nA = (\u003cscript input=\"range\" min=\"0\" max=\"100\" value=\"1\" step=\"1\" default=\"1\" output=\"A0\"\u003e\n@input\n\u003c/script\u003e,\n\u003cscript input=\"range\" min=\"-100\" max=\"100\" value=\"2\" step=\"1\" default=\"2\" output=\"A1\"\u003e\n@input\n\u003c/script\u003e\n)\n\n``` js @GGBScript\n// Definiere Punkte\nlet A = Punkt(@input(`A0`), @input(`A1`), \"A\");\nlet B = Punkt(1, 6, \"B\");\nlet C = Punkt(2, 5, \"C\");\n\n\n// Erzeuge ein Polygon\nconst P = Polygon(A, B, C);\n\nMittelpunkt(A, B, C);\n```\n\n## Abstand\n\n``` js @GGBScript\n// Definiere Punkte\nlet A = Punkt(1, 2, \"A\");\nlet B = Punkt(4, 6, \"B\");\nlet C = Punkt(2, 5, \"C\");\nlet D = Punkt(6, 3, \"D\");\n\nPolygon(A, B, C);\n\nlet M = Mittelpunkt(A, B, C);\n\n// Berechne den Abstand der Geraden\nlet d = Abstand(M, D);\n```\n\n---\n\n``` js @GGBScript\n// Definiere Punkte\nlet A = Punkt(1, 2, \"A\");\nlet B = Punkt(4, 6, \"B\");\nlet C = Punkt(2, 5, \"C\");\nlet D = Punkt(6, 3, \"D\");\n\n// Erzeuge zwei Geraden\nlet g1 = Line(A, B, \"g1\");\nlet g2 = Strecke(C, D, \"g2\");\n\n// Berechne den Abstand der Geraden\nlet d = Abstand(g1, g2);\n```\n\n\n## Schnittpunkt\n\n``` js @GGBScript\n// Definiere Punkte\nlet A = Punkt(1, 2, \"A\");\nlet B = Punkt(4, 6, \"B\");\nlet C = Punkt(2, 5, \"C\");\nlet D = Punkt(6, 3, \"D\");\n\n// Erzeuge zwei Geraden\nlet g1 = Line(A, B, \"g1\");\nlet g2 = Strecke(C, D, \"g2\");\n\n// Berechne den Schnittpunkt der Geraden\nlet S = Schnittpunkt(g1, g2);\n\nWinkel(A, S, C);\n```\n\n## Winkel\n\n``` js @GGBScript\n// Definiere Punkte\nlet A = Punkt(1, 2, \"A\");\nlet B = Punkt(4, 6, \"B\");\nlet C = Punkt(2, 5, \"C\");\n\nStrecke(A, B, \"s1\");\nStrecke(B, C, \"s2\");\n\n// Erzeuge ein Polygon\nlet w = Winkel(A, B, C);\n```\n## Lot\n\n``` js @GGBScript\n// Definiere Punkte\nlet A = Punkt(1, 2, \"A\");\nlet B = Punkt(4, 6, \"B\");\nlet C = Punkt(2, 5, \"C\");\n\n// Erzeuge ein Gerade\nlet G = Gerade(A, B, \"G\");\n\n// Erzeuge ein Lot\nlet L = Lot(C, G, \"L\");\n```\n\n## Text\n\n``` js @GGBScript\n// Definiere einen Punkt\nlet A = Punkt(1, 2, \"A\");\n\n// Erzeuge einen Text\nlet T = Text([1,2.3], \"Text\");\n```\n\n\n\n# Rotation\n\nA = (\u003cscript input=\"range\" min=\"0\" max=\"100\" value=\"50\" step=\"1\" default=\"50\" output=\"A0\"\u003e\n@input\n\u003c/script\u003e,\n\u003cscript input=\"range\" min=\"-100\" max=\"100\" value=\"50\" step=\"1\" default=\"50\" output=\"A1\"\u003e\n@input\n\u003c/script\u003e\n)\n\nB = (\u003cscript input=\"range\" min=\"0\" max=\"100\" value=\"96\" step=\"1\" default=\"96\" output=\"B0\"\u003e\n@input\n\u003c/script\u003e,\n\u003cscript input=\"range\" min=\"-100\" max=\"100\" value=\"27\" step=\"1\" default=\"27\" output=\"B1\"\u003e\n@input\n\u003c/script\u003e\n)\n\n\nC = (\u003cscript input=\"range\" min=\"0\" max=\"100\" value=\"20\" step=\"1\" default=\"20\" output=\"C0\"\u003e\n@input\n\u003c/script\u003e,\n\u003cscript input=\"range\" min=\"-100\" max=\"100\" value=\"20\" step=\"1\" default=\"20\" output=\"C1\"\u003e\n@input\n\u003c/script\u003e\n)\n\nRotation: \n\u003cscript input=\"range\" min=\"0\" max=\"360\" value=\"0\" step=\"1\" default=\"0\" output=\"rotation\"\u003e\n@input\n\u003c/script\u003e°\n\n\n``` js @GGBScript\nUserAxisLimits(0,150,0,60);\n\nconst A = Punkt(@input(`A0`), @input(`A1`), \"A\");\nconst B = Punkt(@input(`B0`), @input(`B1`), \"B\");\nconst C = Punkt(@input(`C0`), @input(`C1`), \"C\");\n\nconst P = Polygon(\"A\", \"B\", \"C\");\n\nFarbe(P, \"red\");\n\nconst M = Mittelpunkt(P);\n\nconst P2 = Rotation(P, M, @input(`rotation`));\n\nFarbe(P2, \"blue\");\n\nKreis(M, 16, \"Kreis\");\n```\n\n## Vektor\n\n``` js @GGBScript\n// Erzeuge einen Vektor\nlet V = Vektor([1,2], [4,6], \"V\");\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliatemplates%2Fggbscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliatemplates%2Fggbscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliatemplates%2Fggbscript/lists"}