Bitbybit Docs
    Preparing search index...

    Class Vector

    Matematika vektor pada array angka biasa. Sebuah vektor adalah array angka; dalam 3D bentuknya [x, y, z] dengan Y mengarah ke atas, sama seperti titik, sehingga keduanya dapat diberikan ke metode satu sama lain. Setiap metode mengembalikan array atau angka baru dan tidak pernah mengubah masukannya. Sudut dalam derajat.

    Index

    Constructors

    angles

    • Mengukur sudut antara dua vektor dalam derajat, selalu antara 0 dan 180.

      Arah putaran tidak diperhitungkan; gunakan signedAngleBetween untuk itu. Contoh: [1,0,0] dan [0,1,0] -> 90

      Parameters

      Returns number

      Sudut dalam derajat

      const angle = bitbybit.vector.angleBetween({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Mengukur sudut bertanda dari vektor 2D pertama ke yang kedua, dalam derajat dari -180 sampai 180.

      Hanya dua entri pertama setiap vektor yang dipakai; sudut positif berputar berlawanan arah jarum jam. Contoh: [1,0] ke [0,1] -> 90, [0,1] ke [1,0] -> -90

      Parameters

      Returns number

      Sudut bertanda dalam derajat

      const angle = bitbybit.vector.angleBetweenNormalized2d({ first: [1, 0], second: [0, 1] });
      
    • Mengukur sudut dari vektor pertama ke yang kedua, berputar mengelilingi arah acuan, dalam derajat dari 0 sampai 360.

      Putarannya berlawanan arah jarum jam jika vektor acuan mengarah ke Anda. Contoh: [1,0,0] ke [0,0,-1] mengelilingi [0,1,0] -> 90

      Parameters

      Returns number

      Sudut dalam derajat dari 0 sampai 360

      const angle = bitbybit.vector.positiveAngleBetween({ first: [1, 0, 0], second: [0, 0, -1], reference: [0, 1, 0] });
      
    • Mengukur sudut dari vektor pertama ke yang kedua, berputar mengelilingi arah acuan, dalam derajat dari 0 sampai 360.

      Putarannya berlawanan arah jarum jam jika vektor acuan mengarah ke Anda: putaran searah jarum jam sebesar 30 derajat terbaca sebagai 330. Contoh: [1,0,0] ke [0,0,-1] mengelilingi [0,1,0] -> 90

      Parameters

      Returns number

      Sudut dalam derajat dari 0 sampai 360

      const angle = bitbybit.vector.signedAngleBetween({ first: [1, 0, 0], second: [0, 0, -1], reference: [0, 1, 0] });
      

    base

    • Menghitung hasil kali silang dua vektor 3D: vektor yang tegak lurus terhadap keduanya.

      Arahnya mengikuti aturan tangan kanan dan panjangnya adalah luas jajar genjang yang direntangkan kedua vektor. Contoh: [1,0,0] x [0,1,0] -> [0,0,1]

      Parameters

      Returns number[]

      Vektor yang tegak lurus terhadap keduanya

      const normal = bitbybit.vector.cross({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • Membagi setiap entri vektor dengan satu angka.

      Contoh: [10,20,30] / 2 -> [5,10,15]

      Parameters

      Returns number[]

      Vektor hasil pembagian

      const half = bitbybit.vector.div({ vector: [10, 20, 30], scalar: 2 });
      
    • Mengurangkan nilai pertama vektor dari nilai terakhirnya, yang untuk daftar terurut adalah rentangnya.

      Contoh: [1,3,5,9] -> 8

      Parameters

      Returns number

      Nilai terakhir dikurangi nilai pertama

      const span = bitbybit.vector.domain({ vector: [1, 3, 5, 9] });
      
    • Menghitung hasil kali titik dua vektor: jumlah hasil kali entri-entri yang bersesuaian.

      Nilainya 0 untuk vektor yang tegak lurus dan, untuk vektor satuan, kosinus sudut di antara keduanya. Contoh: [1,2,3] dan [4,5,6] -> 32

      Parameters

      Returns number

      Hasil kali titik

      const projection = bitbybit.vector.dot({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Mengalikan setiap entri vektor dengan satu angka.

      Contoh: [2,3,4] x 5 -> [10,15,20]

      Parameters

      Returns number[]

      Vektor yang diskalakan

      const scaled = bitbybit.vector.mul({ vector: [2, 3, 4], scalar: 5 });
      
    • Membalik tanda setiap entri, sehingga vektor mengarah ke arah sebaliknya.

      Contoh: [5,-3,2] -> [-5,3,-2]

      Parameters

      Returns number[]

      Vektor yang dinegasikan

      const opposite = bitbybit.vector.neg({ vector: [5, -3, 2] });
      
    • Menghitung kuadrat panjang vektor, yang menghindari akar kuadrat jika hanya membandingkan panjang.

      Contoh: [3,4,0] -> 25

      Parameters

      Returns number

      Panjang kuadrat

      const n2 = bitbybit.vector.normSquared({ vector: [3, 4, 0] });
      
    • Menghitung panjang vektor.

      Contoh: [3,4,0] -> 5, [1,0,0] -> 1

      Parameters

      Returns number

      Panjang dalam satuan model

      const len = bitbybit.vector.norm({ vector: [3, 4, 0] });
      
    • Menskalakan vektor 3D ke panjang 1 sambil mempertahankan arahnya.

      Vektor yang lebih pendek dari 1e-8 tidak memiliki arah yang dapat dipertahankan, sehingga hasilnya undefined. Contoh: [3,4,0] -> [0.6,0.8,0]

      Parameters

      • inputs: VectorDto

        Vektor 3D yang akan dinormalisasi

      Returns number[]

      Vektor satuan, atau undefined untuk masukan berpanjang nol

      const direction = bitbybit.vector.normalized({ vector: [3, 4, 0] });
      
    • Menemukan titik pada jarak tertentu dari titik awal sepanjang sebuah arah.

      Arah dipakai apa adanya, sehingga arah dengan panjang 2 menempuh dua kali jarak. Contoh: awal [0,0,0], arah [1,0,0], jarak 5 -> [5,0,0]

      Parameters

      Returns number[]

      Titik pada sinar

      const ahead = bitbybit.vector.onRay({ point: [0, 0, 0], vector: [1, 0, 0], distance: 5 });
      
    • Mengurangkan vektor kedua dari yang pertama, entri demi entri.

      Contoh: [10,20,30] - [1,2,3] -> [9,18,27]

      Parameters

      • inputs: TwoVectorsDto

        Vektor yang dikurangi dan vektor pengurangnya

      Returns number[]

      Vektor hasil pengurangan

      const diff = bitbybit.vector.sub({ first: [10, 20, 30], second: [1, 2, 3] });
      
    • Menjumlahkan semua nilai vektor menjadi satu angka.

      Contoh: [1,2,3,4] -> 10

      Parameters

      • inputs: VectorDto

        Vektor yang akan dijumlahkan

      Returns number

      Total

      const total = bitbybit.vector.sum({ vector: [1, 2, 3, 4] });
      
    • Menghitung kuadrat panjang vektor 3D, yang menghindari akar kuadrat jika hanya membandingkan panjang.

      Contoh: [3,4,0] -> 25

      Parameters

      Returns number

      Panjang kuadrat

      const l2 = bitbybit.vector.lengthSq({ vector: [3, 4, 0] });
      
    • Menghitung panjang vektor 3D.

      Contoh: [3,4,0] -> 5

      Parameters

      Returns number

      Panjang dalam satuan model

      const len = bitbybit.vector.length({ vector: [3, 4, 0] });
      

    create

    • Membangun vektor 3D dari nilai x, y dan z-nya.

      Contoh: x=1, y=2, z=3 -> [1,2,3]

      Parameters

      Returns Vector3

      Vektor [x, y, z]

      const up = bitbybit.vector.vectorXYZ({ x: 0, y: 1, z: 0 });
      
    • Membangun vektor 2D dari nilai x dan y-nya.

      Contoh: x=3, y=4 -> [3,4]

      Parameters

      Returns Vector2

      Vektor [x, y]

      const right = bitbybit.vector.vectorXY({ x: 1, y: 0 });
      
    • Mencantumkan bilangan bulat dari 0 sampai, tetapi tidak termasuk, max.

      Contoh: max=5 -> [0,1,2,3,4]

      Parameters

      • inputs: RangeMaxDto

        Akhir rentang, yang tidak disertakan

      Returns number[]

      Angka-angka dari 0 sampai max - 1

      const indices = bitbybit.vector.range({ max: 5 });
      
    • Mencantumkan angka-angka dari min sampai max, melangkah sebesar step; max disertakan jika suatu langkah tepat mendarat padanya.

      Contoh: min=0, max=10, step=2 -> [0,2,4,6,8,10]

      Parameters

      • inputs: SpanDto

        Awal, akhir dan langkah

      Returns number[]

      Angka-angka dalam rentang

      const values = bitbybit.vector.span({ min: 0, max: 10, step: 2.5 });
      
    • Mencantumkan nrItems angka dari min sampai max yang dijarakkan oleh kurva easing, sehingga mengumpul di satu ujung atau keduanya.

      Dengan intervals aktif, hasilnya berisi celah antar tetangga, bukan nilai-nilainya sendiri. Contoh: min=0, max=100, nrItems=5, ease='easeInQuad' -> [0, 6.25, 25, 56.25, 100]

      Parameters

      • inputs: SpanEaseItemsDto

        Awal, akhir, jumlah item, easing dan apakah celahnya yang dikembalikan

      Returns number[]

      Angka-angka yang di-easing, atau celah di antaranya

      const eased = bitbybit.vector.spanEaseItems({ min: 0, max: 100, nrItems: 5, ease: Bit.Inputs.Math.easeEnum.easeInQuad, intervals: false });
      
    • Mencantumkan nrItems angka berjarak sama dari min sampai max, keduanya disertakan.

      Contoh: min=0, max=10, nrItems=5 -> [0, 2.5, 5, 7.5, 10]

      Parameters

      Returns number[]

      Angka-angka dengan jarak seragam

      const values = bitbybit.vector.spanLinearItems({ min: 0, max: 10, nrItems: 5 });
      
    • Mengubah daftar string angka menjadi angka.

      String yang bukan angka menjadi NaN. Contoh: ['1', '2.5', '3'] -> [1, 2.5, 3]

      Parameters

      Returns number[]

      Angka-angkanya

      const numbers = bitbybit.vector.parseNumbers({ vector: ["1", "2.5", "-3"] });
      

    distance

    • Menghitung kuadrat jarak antara dua vektor, yang menghindari akar kuadrat jika hanya membandingkan jarak.

      Contoh: [0,0,0] ke [3,4,0] -> 25

      Parameters

      Returns number

      Jarak kuadrat

      const d2 = bitbybit.vector.distSquared({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Menghitung jarak garis lurus antara dua vektor.

      Contoh: [0,0,0] ke [3,4,0] -> 5

      Parameters

      Returns number

      Jarak dalam satuan model

      const distance = bitbybit.vector.dist({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • Memadukan dua vektor secara linear berdasarkan pecahan.

      fraction adalah bagian dari first: 1 menghasilkan first, 0 menghasilkan second, 0.5 titik tengah. Contoh: [0,0,0] dan [10,10,10] pada 0.5 -> [5,5,5]

      Parameters

      Returns number[]

      Vektor hasil pencampuran

      const mid = bitbybit.vector.lerp({ first: [0, 0, 0], second: [10, 10, 10], fraction: 0.5 });
      

    extract

    • Menemukan nilai terbesar dalam vektor.

      Contoh: [3, 7, 2, 9, 1] -> 9

      Parameters

      Returns number

      Entri terbesar

      const largest = bitbybit.vector.max({ vector: [3, 7, 2, 9, 1] });
      
    • Menemukan nilai terkecil dalam vektor.

      Contoh: [3, 7, 2, 9, 1] -> 1

      Parameters

      Returns number

      Entri terkecil

      const smallest = bitbybit.vector.min({ vector: [3, 7, 2, 9, 1] });
      

    remove

    • Menghapus setiap vektor yang berulang dari daftar, mempertahankan kemunculan pertama masing-masing.

      Dua vektor dihitung sama jika setiap entrinya berbeda kurang dari tolerance. Contoh: [[1,2,3], [4,5,6], [1,2,3], [7,8,9]] -> [[1,2,3], [4,5,6], [7,8,9]]

      Parameters

      Returns number[][]

      Vektor-vektor tanpa pengulangan, dalam urutan aslinya

      const unique = bitbybit.vector.removeAllDuplicateVectors({
      vectors: [[1, 2, 3], [4, 5, 6], [1, 2, 3]],
      tolerance: 1e-7,
      });
    • Menghapus vektor jika mengulang vektor tepat sebelumnya; vektor yang sama di tempat yang lebih jauh dipertahankan.

      Dengan checkFirstAndLast aktif, vektor terakhir yang mengulang yang pertama juga dibuang, yang menutup loop titik dengan rapi. Entri yang berjarak dalam tolerance satu sama lain dihitung sama. Contoh: [[1,2], [1,2], [3,4], [1,2]] -> [[1,2], [3,4], [1,2]]

      Parameters

      Returns number[][]

      Vektor-vektor tanpa pengulangan berurutan

      const cleaned = bitbybit.vector.removeConsecutiveDuplicateVectors({
      vectors: [[0, 0], [0, 0], [1, 1], [0, 0]],
      checkFirstAndLast: true,
      tolerance: 1e-7,
      });

    sum

    • Menjumlahkan daftar vektor entri demi entri menjadi satu vektor.

      Hasilnya memiliki entri sebanyak vektor pertama. Contoh: [[1,2,3], [4,5,6], [7,8,9]] -> [12,15,18]

      Parameters

      Returns number[]

      Vektor hasil penjumlahan

      const total = bitbybit.vector.addAll({ vectors: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] });
      
    • Menjumlahkan dua vektor entri demi entri.

      Contoh: [1,2,3] + [4,5,6] -> [5,7,9]

      Parameters

      Returns number[]

      Vektor hasil penjumlahan

      const sum = bitbybit.vector.add({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • Memberi tahu apakah setiap nilai dalam daftar boolean bernilai true.

      Contoh: [true, true, true] -> true, [true, false, true] -> false

      Parameters

      Returns boolean

      True jika tidak ada entri yang false

      const allTrue = bitbybit.vector.all({ vector: [true, true, false] });
      

    validate

    • Memberi tahu apakah dua vektor sama dalam batas toleransi, entri demi entri.

      Vektor dengan panjang berbeda tidak pernah sama. Contoh: [1,2,3] dan [1.0001,2.0001,3.0001] dengan toleransi 0.001 -> true

      Parameters

      Returns boolean

      True jika setiap entri berbeda kurang dari toleransi

      const same = bitbybit.vector.vectorsTheSame({ vec1: [1, 2, 3], vec2: [1, 2, 3.0000001], tolerance: 1e-6 });
      
    • Menandai entri-entri vektor mana yang merupakan bilangan berhingga.

      Contoh: [1, 2, Infinity, 3] -> [true, true, false, true]

      Parameters

      Returns boolean[]

      Satu boolean per entri, true jika entri tersebut berhingga

      const flags = bitbybit.vector.finite({ vector: [1, Infinity, 3] });
      
    • Memberi tahu apakah sebuah vektor tidak memiliki panjang, yaitu setiap entrinya persis 0.

      Contoh: [0,0,0] -> true, [0,0,0.001] -> false

      Parameters

      Returns boolean

      True jika panjangnya 0

      const zero = bitbybit.vector.isZero({ vector: [0, 0, 0] });