Egy R sugarú kör (korong), amelynek középpontja az origóban van, és teljes egészében az XY-síkban fekszik (z = 0). A közelítés N = 6 egyenlő szektorra van felosztva — a felosztási szög: Δθ = 2π/6 = 60°. Manuálisan építjük fel a CircleGeometry helyett, hogy az indexelés folyamata teljes egészében látható legyen.
A kerület csúcspontjai i = 0…N−1 egész paraméterrel:
Az összes csúcspont (origó + N kerületi pont):
| Index | i | θ (rad) | θ (fok) | x | y |
|---|---|---|---|---|---|
| 0 | — | — | — | 0.000 | 0.000 |
| 1 | 0 | 0 | 0° | 2.000 | 0.000 |
| 2 | 1 | π/3 | 60° | 1.000 | 1.732 |
| 3 | 2 | 2π/3 | 120° | −1.000 | 1.732 |
| 4 | 3 | π | 180° | −2.000 | 0.000 |
| 5 | 4 | 4π/3 | 240° | −1.000 | −1.732 |
| 6 | 5 | 5π/3 | 300° | 1.000 | −1.732 |
A kör fan-topológiával épül fel: minden háromszög az origóból (index 0) indul, és a kerület két szomszédos pontját köti össze. Összesen N = 6 háromszög, N+1 = 7 csúcs.
Az index-tömb felépítése (fan-topológia, minden háromszög az origóból indul):
[0] 0→1→2 [1] 0→2→3 [2] 0→3→4
[3] 0→4→5 [4] 0→5→6 [5] 0→6→1
Az utolsó háromszög visszazár: az utolsó kerületi csúcs (6) után ismét az első kerületi csúcs (1) következik.
Két külön Mesh azonos geometriával: FrontSide és BackSide. A ◑ DoubleSide gomb bekapcsolásakor a matFront.side értéke THREE.DoubleSide-ra vált — a hátlap mesh elrejtve, az előlap anyaga mindkét oldalt lefedi.
A GridHelper alapból az XZ-síkban van. rotation.x = π/2 forgatással kerül az XY-síkba (z = 0), hogy a körrel egy síkban legyen látható.
A wireframe LineSegments-ként van megvalósítva — nem MeshBasicMaterial({wireframe:true})-ként, hogy elkerüljük a z-fighting-ot. Tartalmazza az összes sugárirányú élt és a záró kerületi vonalakat: összesen 2N = 12 él (N sugár + N kerületi ív).
Egyetlen önálló HTML fájl, offline is megnyitható.
⬇ Letöltés: circle3d.html