====== 3D-Grafik ======
Die Online-IDE ermöglicht einen einfachen Einstieg in die 3D-Grafikprogrammierung und stellt dafür viele spezialisierte Klassen zur Verfügung, die intern wiederum auf [[https://threejs.org/|die Open-Source-Bibliothek three.js]] zurückgreifen. \\ \\
Die 3D-Grafik-API besteht Stand Januar 2025 aus 35 Klassen und ist noch im Entstehen. Die Bezeichner aller Klassen dieser API enden auf "3d", sodass man sie von den anderen Klassen der API leicht unterscheiden kann.
===== Einfache 3D-Grundformen =====
Die Online-IDE bietet folgende 3d-Grundformen an:
* ''Box3d'' (Quader)
* ''Sphere3d'' (Kugel)
* ''Cylinder3d''
* ''Cone3d'' (Kegel bzw. Kegelstumpf)
* ''Torus3d''
* ''Icosahedron3d''
Wenn Sie bei den folgenden Demos in die Zeichenfläche **klicken und die Maus bewegen**, können Sie die **Kameraposition verändern** und die Objekte so von allen Seiten betrachten. Mit dem **Mausrad** können Sie **zoomen**.
==== Box3d (Quader) ====
Zur Bedeutung der maximal sechs möglichen Parameter width, height, depth, widthSegments, heightSegments, depthSegments siehe [[https://threejs.org/docs/?q=Cyl#api/en/geometries/BoxGeometry|die Dokumentation der BoxGeometry-Klasse von three.js]].
==== Sphere3d (Kugel) ====
Zur Bedeutung der sieben möglichen Parameter radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength siehe [[https://threejs.org/docs/#api/en/geometries/SphereGeometry|die Dokumentation der SphereGeometry-Klasse von three.js]]. Der Konstruktor der Online-IDE unterscheidet sich nur insofern, als dass die Winkel im Gradmaß angegeben werden statt im Bogenmaß.
==== Cylinder3d ====
Zur Bedeutung der maximal acht möglichen Parameter radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength siehe [[https://threejs.org/docs/?q=Cyl#api/en/geometries/CylinderGeometry|die Dokumentation der CylinderGeometry-Klasse von three.js]]. Der Konstruktor der Online-IDE unterscheidet sich nur insofern, als dass die Winkel im Gradmaß angegeben werden statt im Bogenmaß.
==== Cone3d ====
Zur Bedeutung der maximal sieben möglichen Parameter radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength siehe [[https://threejs.org/docs/?q=Cyl#api/en/geometries/ConeGeometry|die Dokumentation der ConeGeometry-Klasse von three.js]]. Der Konstruktor der Online-IDE unterscheidet sich nur insofern, als dass die Winkel im Gradmaß angegeben werden statt im Bogenmaß.
==== Torus3d ====
Zur Bedeutung der maximal fünf möglichen Parameter radius, tube, radialSegments, tubularSegments, arc siehe [[https://threejs.org/docs/?q=Cyl#api/en/geometries/TorusGeometry|die Dokumentation der TorusGeometry-Klasse von three.js]]. Der Konstruktor der Online-IDE unterscheidet sich nur insofern, als dass der Winkel arc im Gradmaß angegeben wird statt im Bogenmaß.
==== Icosahedron3d ====
Zur Bedeutung der maximal zwei möglichen Parameter radius, detail siehe [[https://threejs.org/docs/?q=Cyl#api/en/geometries/IcosahedronGeometry|die Dokumentation der IcosahedronGeometry-Klasse von three.js]].