Zeichnen
2D Basisformen
const {line, arc, circle, ellipse, rectangle} = jscad.primitives;
2D-Formen (2D primitives) sind ein guter Startpunkt. Man kann später Extrusion- oder ExpansionFunktionen nutzen, um aus den 2D-Formen 3D-Körper zu generieren (siehe 3D / Extrusion).
Die Dokumentation aller 2D Primitives findet sich hier.
Linie
Der line
-Befehl benötigt ein Array mit x/y-Koordinaten:
const shape = line([
[x1, y1],
[x2, y2]
]);
Man kann auch mehr Punkte übergeben, um einen Pfad zu generieren.
Kreisbogen
Der arc
-Befehl generiert ebenfalls eine Linie und funktioniert ähnliche wie der arc
-Befehl bei p5js:
const shape = arc({
center: [0, 0],
radius: 1,
startAngle: 0,
endAngle: Math.PI * 2, //full arc
segments: 32 // level of detail
});
Fast alle Attribute der Parameter-Objekte sind optional, jede Funktion hat immer Standardwerte die bei fehlenden Attributen eingesetzt werden.
Kreis
const shape = circle({
center: [0, 0],
radius: 1,
startAngle: 0,
endAngle: Math.PI * 2, //full arc
segments: 32 // level of detail
});
Das
circle
-Kommando sieht genauso aus, wie dasarc
-Kommando, der Unterschied ist, dassarc
einen Pfad zurückgibt undcircle
ein Polygon.
Ellipse
Der circle
-Befehl und der ellipse
-Befehl akzeptieren ähnliche Parameter, im Gegensatz zum Kreis, kann man bei der Ellipse den Radius als Array angeben, um unterschiedliche Breiten- und Höhenangaben zu machen:
const shape = ellipse({
center: [0, 0],
radius: [1,1],
startAngle: 0,
endAngle: Math.PI * 2, //full arc
segments: 32 // level of detail
});
Alle Formen oder Körper die Rundungen aufweisen, haben ein
segments
-Attribut. Hierüber können wir den Detailgrad / Rundung der Kurven definieren. Mehr Segmente generieren rundere Kurven, gleichzeitig führen mehr Segmente auch zu mehr Vertices (größere Dateien, längere Renderingzeiten, etc.).
Rechteck
const shape = rectangle({
size: [2, 2],
center: [0, 0, 0]
});
3D-Körper (primitives)
const {cube, sphere, cylinder} = jscad.primitives;
Die Dokumentation aller Primitives gibt es hier.
Würfel
const shape = cube({
size: 1,
center: [0, 0, 0]
});
Kugel
const shape = sphere({
radius: 1,
center: [0, 0, 0]
});
Zylinder
const shape = cylinder({
center: [0, 0, 0],
height: 2,
radius: 1,
segments: 32
});
Hier sind ein paar weitere 3D primitives, Beispiele dafür wie man diese Konstruiert sind in der Boilerplate enthalten:
Aufgabe: JSCAD kennenlernen
Erkunde die verschiedenen 2D und 3D primitives. Experimenteire mit den veschiedenen Properties und wie diese den output verändern.