Bitbybit Docs
    Preparing search index...

    Class ManifoldOperations

    Mengubah solid Manifold di luar boolean: membungkusnya dalam hull cembung, mengiris dan memproyeksikannya menjadi penampang melintang, memperhalus dan menghaluskan mesh-nya, menyederhanakannya, menyusun dan menguraikannya, dan menghitung normal dan kelengkungan ke dalam kanal properti verteks. Kanal properti adalah satu angka per verteks yang disimpan pada mesh, seperti tiga kanal dari sebuah normal. Setiap metode mengembalikan solid baru.

    Index

    Constructors

    adjustments

    • Menghitung normal untuk setiap verteks dari mesh dan menyimpannya dalam tiga kanal properti mulai dari normalIdx.

      Tepi yang lebih tajam dari minSharpAngle, dalam derajat, mempertahankan normal terpisah di setiap sisi dan tetap tajam; pada 0 setiap segitiga mempertahankan normalnya sendiri. Muka datar dari beberapa segitiga tetap datar.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid dengan normal tersimpan

      const withNormals = await bitbybit.manifold.manifold.operations.calculateNormals({ manifold: shape, normalIdx: 0, minSharpAngle: 60 });
      
    • Menghitung seberapa kuat permukaan melengkung di setiap verteks dan menyimpannya dalam kanal properti: kelengkungan Gauss di gaussianIdx, kelengkungan rata-rata di meanIdx.

      Kelengkungan adalah kebalikan jari-jari lengkungan, positif di tempat permukaan cembung dan negatif di tempat cekung; indeks di bawah 0 melewati kanal itu.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid dengan kelengkungan tersimpan

      const withCurvature = await bitbybit.manifold.manifold.operations.calculateCurvature({ manifold: shape, gaussianIdx: 0, meanIdx: 1 });
      
    • Menambahkan segitiga ke solid yang telah dihaluskan sampai setiap titik mesh-nya berada dalam tolerance dari permukaan halus, sehingga daerah yang lengkungannya rapat mendapat lebih banyak segitiga daripada yang datar.

      Hanya solid yang dihaluskan dengan smoothOut atau smoothByNormals yang berubah; yang lain dikembalikan sebagai salinan.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid yang diperhalus

      const finer = await bitbybit.manifold.manifold.operations.refineToTolerance({ manifold: smoothed, tolerance: 0.01 });
      
    • Menambahkan segitiga ke solid dengan membagi setiap tepi menjadi potongan-potongan dengan panjang kira-kira seperti yang diberikan, menambahkan verteks dalam agar segitiga tetap merata.

      Pada solid yang dihaluskan dengan smoothOut atau smoothByNormals verteks-verteks baru bergerak ke permukaan halus; jika tidak, permukaan tetap apa adanya.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid yang diperhalus

      const finer = await bitbybit.manifold.manifold.operations.refineToLength({ manifold: smoothed, length: 0.5 });
      
    • Menambahkan segitiga ke solid dengan membagi setiap tepi menjadi number potongan; dengan 2, setiap segitiga menjadi empat.

      Pada solid yang dihaluskan dengan smoothOut atau smoothByNormals verteks-verteks baru bergerak ke permukaan halus; jika tidak, segitiga-segitiga baru tetap datar.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid yang diperhalus

      const finer = await bitbybit.manifold.manifold.operations.refine({ manifold: smoothed, number: 2 });
      
    • Menandai solid untuk penghalusan dengan menghitung tangen dari segitiga-segitiganya, sehingga refine atau refineToLength berikutnya melengkungkan segitiga-segitiga baru menjadi permukaan halus.

      Tepi yang lebih tajam dari minSharpAngle, dalam derajat, tetap tajam; minSmoothness di atas 0 sedikit membulatkannya, dan 1 menghaluskan semuanya. Geometrinya sendiri tidak berubah sampai diperhalus.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid dengan tangen penghalusan

      const smoothed = await bitbybit.manifold.manifold.operations.smoothOut({ manifold: cube, minSharpAngle: 60, minSmoothness: 0 });
      const rounded = await bitbybit.manifold.manifold.operations.refineToLength({ manifold: smoothed, length: 0.5 });
    • Menandai solid untuk penghalusan menggunakan normal yang disimpan dalam properti verteksnya, sehingga refine atau refineToLength berikutnya melengkungkan segitiga-segitiga baru menjadi permukaan halus.

      normalIdx adalah yang pertama dari tiga kanal normal, sebagaimana disimpan calculateNormals; di tempat normal-normal pada sebuah verteks tidak sepakat, tepinya tetap tajam.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid dengan tangen penghalusan

      const smoothed = await bitbybit.manifold.manifold.operations.smoothByNormals({ manifold: withNormals, normalIdx: 0 });
      
    • Menghapus verteks dari mesh solid sambil menjaga setiap permukaan dalam tolerance dari posisinya semula, untuk mengurangi jumlah segitiga.

      Hasilnya mempertahankan subset dari verteks asli; nilai toleransi solid itu sendiri tetap tidak berubah.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid yang disederhanakan

      const lighter = await bitbybit.manifold.manifold.operations.simplify({ manifold: shape, tolerance: 0.05 });
      
    • Menulis ulang properti verteks sebuah solid dengan fungsi yang menerima posisi dan properti lama setiap verteks dan mengisi yang baru.

      numProp menyetel berapa banyak properti yang dimiliki setiap verteks sesudahnya, sehingga kanal dapat ditambahkan atau dibuang; membaca melewati jumlah lama atau menulis melewati jumlah baru bersifat undefined.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid dengan properti baru

      const colored = await bitbybit.manifold.manifold.operations.setProperties({
      manifold: shape,
      numProp: 3,
      propFunc: (newProp, position) => { newProp[0] = position[0]; newProp[1] = position[1]; newProp[2] = position[2]; },
      });

    basic

    • Memberi solid toleransi baru, galat pembulatan yang boleh dibawanya, dan menyederhanakan mesh-nya jika toleransi membesar.

      Segitiga yang lebih tipis dari toleransi diperlakukan sebagai degenerat dan dihapus.

      Parameters

      Returns Promise<ManifoldPointer>

      Solid dengan toleransi baru

      const coarser = await bitbybit.manifold.manifold.operations.setTolerance({ manifold: shape, tolerance: 0.01 });
      
    • Mencadangkan count id mesh unik berurutan dan mengembalikan yang pertama, untuk menandai kumpulan segitiga yang dapat ditemukan lagi setelah operasi-operasi berikutnya.

      Tetapkan ke runOriginalID sebuah mesh sebelum membangun solid darinya, misalnya untuk memisahkan beberapa material.

      Parameters

      • inputs: CountDto

        Berapa banyak id yang dipesan

      Returns Promise<number>

      Id pertama yang dipesan; sisanya mengikuti secara berurutan

      const firstId = await bitbybit.manifold.manifold.operations.reserveIds({ count: 2 });
      
    • Membuat salinan solid yang dihitung sebagai asli baru, sehingga salinan dapat membawa properti verteksnya sendiri, misalnya pemetaan UV yang berbeda, dan dibedakan dari asal pembangunannya.

      Muka-muka sebidang digabung dan tepi-tepi di antaranya diciutkan dalam prosesnya; tetap gunakan jalur mesh jika tepi-tepi itu harus dipertahankan.

      Parameters

      Returns Promise<ManifoldPointer>

      Salinan yang ditandai sebagai asli

      const original = await bitbybit.manifold.manifold.operations.asOriginal({ manifold: shape });
      

    composition

    • Mengemas beberapa solid menjadi satu, kebalikan dari decompose.

      Solid yang tumpang tindih dilebur, seperti yang dilakukan union boolean; solid yang dijaga terpisah tetap menjadi bagian-bagian terpisah dari satu hasil itu.

      Parameters

      Returns Promise<ManifoldPointer>

      Satu solid yang menampung semuanya

      const packed = await bitbybit.manifold.manifold.operations.compose({ manifolds: [cube, sphere] });
      
    • Memecah solid menjadi potongan-potongan terpisah yang tidak terhubung, kebalikan dari compose.

      Solid yang seluruhnya satu potongan dikembalikan sebagai daftar berisi satu salinan.

      Parameters

      Returns Promise<ManifoldPointer[]>

      Potongan-potongan terpisah

      const pieces = await bitbybit.manifold.manifold.operations.decompose({ manifold: packed });
      

    cross sections

    • Memotong solid dengan bidang yang sejajar bidang XY pada ketinggian Z yang diberikan dan mengembalikan penampang datarnya sebagai penampang.

      Ketinggian di dasar kotak pembatas solid memberikan muka-muka bawahnya; ketinggian di puncak memberikan penampang kosong.

      Parameters

      Returns Promise<CrossSectionPointer>

      Penampang sebagai penampang melintang

      const section = await bitbybit.manifold.manifold.operations.slice({ manifold: sphere, height: 2 });
      
    • Meratakan solid ke bidang XY dan mengembalikan garis luarnya sebagai penampang, seperti bayangannya di bawah cahaya tepat dari atas.

      Parameters

      Returns Promise<CrossSectionPointer>

      Garis luar sebagai penampang melintang

      const shadow = await bitbybit.manifold.manifold.operations.project({ manifold: shape });
      

    hulls

    • Membungkus solid dalam hull cembungnya, bentuk terkecil tanpa lekukan yang memuatnya, seperti plastik pembungkus yang ditarik kencang di atasnya.

      Parameters

      Returns Promise<ManifoldPointer>

      Hull cembung

      const wrapped = await bitbybit.manifold.manifold.operations.hull({ manifold: shape });
      
    • Membungkus titik-titik, solid-solid atau campuran keduanya dalam satu hull cembung, bentuk terkecil tanpa lekukan yang memuat semuanya.

      Parameters

      Returns Promise<ManifoldPointer>

      Hull cembung

      const wrapped = await bitbybit.manifold.manifold.operations.hullPoints({ points: [[0, 0, 0], [10, 0, 0], [0, 10, 0], [0, 0, 10]] });