Bitbybit Docs
    Preparing search index...

    Class Vector

    رياضيات المتجهات على مصفوفات أرقام بسيطة. المتجه مصفوفة من الأرقام؛ وفي الفضاء ثلاثي الأبعاد هو [x, y, z] حيث يشير Y إلى الأعلى، بالشكل نفسه كالنقطة، بحيث يمكن تمرير كل منهما إلى دوال الآخر. تعيد كل دالة مصفوفة جديدة أو رقما ولا تغير مدخلاتها أبدا. الزوايا بالدرجات.

    Index

    Constructors

    angles

    • يقيس الزاوية بين متجهين بالدرجات، دائماً بين 0 و 180.

      لا يؤخذ اتجاه الدوران في الاعتبار؛ استخدم signedAngleBetween لذلك. مثال: [1,0,0] و [0,1,0] -> 90

      Parameters

      Returns number

      الزاوية بالدرجات

      const angle = bitbybit.vector.angleBetween({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • يقيس الزاوية ذات الإشارة من المتجه ثنائي الأبعاد الأول إلى الثاني، بالدرجات من -180 إلى 180.

      يُستخدم أول مدخلين فقط من كل متجه؛ الزاوية الموجبة تدور عكس اتجاه عقارب الساعة. مثال: [1,0] إلى [0,1] -> 90، [0,1] إلى [1,0] -> -90

      Parameters

      • inputs: TwoVectorsDto

        المتجهان ثنائيا الأبعاد

      Returns number

      الزاوية ذات الإشارة بالدرجات

      const angle = bitbybit.vector.angleBetweenNormalized2d({ first: [1, 0], second: [0, 1] });
      
    • يقيس الزاوية من المتجه الأول إلى الثاني، بالدوران حول اتجاه مرجعي، بالدرجات من 0 إلى 360.

      يكون الدوران عكس اتجاه عقارب الساعة عندما يشير المتجه المرجعي نحوك. مثال: [1,0,0] إلى [0,0,-1] حول [0,1,0] -> 90

      Parameters

      Returns number

      الزاوية بالدرجات من 0 إلى 360

      const angle = bitbybit.vector.positiveAngleBetween({ first: [1, 0, 0], second: [0, 0, -1], reference: [0, 1, 0] });
      
    • يقيس الزاوية من المتجه الأول إلى الثاني، بالدوران حول اتجاه مرجعي، بالدرجات من 0 إلى 360.

      يكون الدوران عكس اتجاه عقارب الساعة عندما يشير المتجه المرجعي نحوك: الدوران مع اتجاه عقارب الساعة بمقدار 30 درجة يُقرأ على أنه 330. مثال: [1,0,0] إلى [0,0,-1] حول [0,1,0] -> 90

      Parameters

      Returns number

      الزاوية بالدرجات من 0 إلى 360

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

    base

    • يحسب الضرب الاتجاهي لمتجهين ثلاثيي الأبعاد: متجه عمودي على كليهما.

      يتبع اتجاهه قاعدة اليد اليمنى وطوله هو مساحة متوازي الأضلاع الذي يمتد عليه المتجهان. مثال: [1,0,0] x [0,1,0] -> [0,0,1]

      Parameters

      • inputs: TwoVectorsDto

        المتجهان ثلاثيا الأبعاد

      Returns number[]

      المتجه العمودي على كليهما

      const normal = bitbybit.vector.cross({ first: [1, 0, 0], second: [0, 1, 0] });
      
    • يقسم كل مدخل في متجه على رقم واحد.

      مثال: [10,20,30] / 2 -> [5,10,15]

      Parameters

      • inputs: VectorScalarDto

        المتجه والرقم المراد القسمة عليه

      Returns number[]

      المتجه المقسوم

      const half = bitbybit.vector.div({ vector: [10, 20, 30], scalar: 2 });
      
    • يطرح القيمة الأولى في متجه من قيمته الأخيرة، وهو ما يمثل مداه في حالة القائمة المرتبة.

      مثال: [1,3,5,9] -> 8

      Parameters

      Returns number

      القيمة الأخيرة ناقص القيمة الأولى

      const span = bitbybit.vector.domain({ vector: [1, 3, 5, 9] });
      
    • يحسب الضرب النقطي لمتجهين: مجموع حواصل ضرب المدخلات المتناظرة.

      يساوي 0 للمتجهات المتعامدة، وبالنسبة لمتجهات الوحدة يساوي جيب تمام الزاوية بينها. مثال: [1,2,3] و [4,5,6] -> 32

      Parameters

      Returns number

      الجداء النقطي

      const projection = bitbybit.vector.dot({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • يضرب كل مدخل في متجه برقم واحد.

      مثال: [2,3,4] x 5 -> [10,15,20]

      Parameters

      • inputs: VectorScalarDto

        المتجه والرقم المراد الضرب فيه

      Returns number[]

      المتجه المحجّم

      const scaled = bitbybit.vector.mul({ vector: [2, 3, 4], scalar: 5 });
      
    • يقلب إشارة كل مدخل، بحيث يشير المتجه إلى الاتجاه المعاكس.

      مثال: [5,-3,2] -> [-5,3,-2]

      Parameters

      • inputs: VectorDto

        المتجه المراد قلبه

      Returns number[]

      المتجه المعكوس الإشارة

      const opposite = bitbybit.vector.neg({ vector: [5, -3, 2] });
      
    • يحسب مربع طول متجه، وهو ما يتجنب الجذر التربيعي عند الاكتفاء بمقارنة الأطوال.

      مثال: [3,4,0] -> 25

      Parameters

      Returns number

      مربع الطول

      const n2 = bitbybit.vector.normSquared({ vector: [3, 4, 0] });
      
    • يحسب طول متجه.

      مثال: [3,4,0] -> 5، [1,0,0] -> 1

      Parameters

      Returns number

      الطول بوحدات النموذج

      const len = bitbybit.vector.norm({ vector: [3, 4, 0] });
      
    • يحجّم متجهاً ثلاثي الأبعاد إلى الطول 1 مع الحفاظ على اتجاهه.

      المتجه الأقصر من 1e-8 ليس له اتجاه يُحافظ عليه، لذا يكون الناتج undefined. مثال: [3,4,0] -> [0.6,0.8,0]

      Parameters

      • inputs: VectorDto

        المتجه ثلاثي الأبعاد المراد تطبيعه

      Returns number[]

      متجه الوحدة، أو undefined لمدخل طوله صفر

      const direction = bitbybit.vector.normalized({ vector: [3, 4, 0] });
      
    • يجد النقطة الواقعة على مسافة معينة من نقطة بداية على طول اتجاه.

      يُستخدم الاتجاه كما هو معطى، لذا فإن اتجاهاً طوله 2 يقطع ضعف المسافة. مثال: البداية [0,0,0]، الاتجاه [1,0,0]، المسافة 5 -> [5,0,0]

      Parameters

      • inputs: RayPointDto

        نقطة البداية والاتجاه والمسافة

      Returns number[]

      النقطة على الشعاع

      const ahead = bitbybit.vector.onRay({ point: [0, 0, 0], vector: [1, 0, 0], distance: 5 });
      
    • يطرح المتجه الثاني من الأول، مدخلاً بمدخل.

      مثال: [10,20,30] - [1,2,3] -> [9,18,27]

      Parameters

      • inputs: TwoVectorsDto

        المتجه المراد الطرح منه والمتجه المراد طرحه

      Returns number[]

      متجه الفروق

      const diff = bitbybit.vector.sub({ first: [10, 20, 30], second: [1, 2, 3] });
      
    • يجمع كل قيم متجه في رقم واحد.

      مثال: [1,2,3,4] -> 10

      Parameters

      • inputs: VectorDto

        المتجه المراد جمع مدخلاته

      Returns number

      المجموع الكلي

      const total = bitbybit.vector.sum({ vector: [1, 2, 3, 4] });
      
    • يحسب مربع طول متجه ثلاثي الأبعاد، وهو ما يتجنب الجذر التربيعي عند الاكتفاء بمقارنة الأطوال.

      مثال: [3,4,0] -> 25

      Parameters

      • inputs: Vector3Dto

        المتجه ثلاثي الأبعاد

      Returns number

      مربع الطول

      const l2 = bitbybit.vector.lengthSq({ vector: [3, 4, 0] });
      
    • يحسب طول متجه ثلاثي الأبعاد.

      مثال: [3,4,0] -> 5

      Parameters

      • inputs: Vector3Dto

        المتجه ثلاثي الأبعاد

      Returns number

      الطول بوحدات النموذج

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

    create

    • يبني متجهاً ثلاثي الأبعاد من قيمه x و y و z.

      مثال: x=1, y=2, z=3 -> [1,2,3]

      Parameters

      Returns Vector3

      المتجه [x, y, z]

      const up = bitbybit.vector.vectorXYZ({ x: 0, y: 1, z: 0 });
      
    • يبني متجهاً ثنائي الأبعاد من قيمتيه x و y.

      مثال: x=3, y=4 -> [3,4]

      Parameters

      Returns Vector2

      المتجه [x, y]

      const right = bitbybit.vector.vectorXY({ x: 1, y: 0 });
      
    • يسرد الأعداد الصحيحة من 0 حتى max دون تضمينها.

      مثال: max=5 -> [0,1,2,3,4]

      Parameters

      • inputs: RangeMaxDto

        نهاية النطاق، وهي مستثناة

      Returns number[]

      الأرقام من 0 إلى max - 1

      const indices = bitbybit.vector.range({ max: 5 });
      
    • يسرد الأرقام من min إلى max، بخطوة قدرها step؛ تُضمَّن max عندما تقع خطوة عليها.

      مثال: min=0, max=10, step=2 -> [0,2,4,6,8,10]

      Parameters

      • inputs: SpanDto

        البداية والنهاية والخطوة

      Returns number[]

      الأرقام في المدى

      const values = bitbybit.vector.span({ min: 0, max: 10, step: 2.5 });
      
    • يسرد nrItems من الأرقام من min إلى max متباعدة وفق منحنى تخفيف، بحيث تتجمع عند أحد الطرفين أو كليهما.

      مع تفعيل intervals، يحتوي الناتج على الفجوات بين الجيران بدلاً من القيم نفسها. مثال: min=0, max=100, nrItems=5, ease='easeInQuad' -> [0, 6.25, 25, 56.25, 100]

      Parameters

      • inputs: SpanEaseItemsDto

        البداية والنهاية وعدد العناصر والتخفيف وما إذا كان يعيد الفجوات

      Returns number[]

      الأرقام المخففة، أو الفجوات بينها

      const eased = bitbybit.vector.spanEaseItems({ min: 0, max: 100, nrItems: 5, ease: Bit.Inputs.Math.easeEnum.easeInQuad, intervals: false });
      
    • يسرد nrItems من الأرقام المتباعدة بالتساوي من min إلى max، مع تضمين كليهما.

      مثال: min=0, max=10, nrItems=5 -> [0, 2.5, 5, 7.5, 10]

      Parameters

      Returns number[]

      الأرقام المتباعدة بالتساوي

      const values = bitbybit.vector.spanLinearItems({ min: 0, max: 10, nrItems: 5 });
      
    • يحوّل قائمة من السلاسل النصية الرقمية إلى أرقام.

      السلسلة النصية التي ليست رقماً تصبح NaN. مثال: ['1', '2.5', '3'] -> [1, 2.5, 3]

      Parameters

      • inputs: VectorStringDto

        السلاسل النصية المراد تحليلها

      Returns number[]

      الأرقام

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

    distance

    • يحسب مربع المسافة بين متجهين، وهو ما يتجنب الجذر التربيعي عند الاكتفاء بمقارنة المسافات.

      مثال: [0,0,0] إلى [3,4,0] -> 25

      Parameters

      Returns number

      مربع المسافة

      const d2 = bitbybit.vector.distSquared({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • يحسب المسافة المستقيمة بين متجهين.

      مثال: [0,0,0] إلى [3,4,0] -> 5

      Parameters

      Returns number

      المسافة بوحدات النموذج

      const distance = bitbybit.vector.dist({ first: [0, 0, 0], second: [3, 4, 0] });
      
    • يمزج متجهين خطياً بكسر.

      fraction هو حصة first: القيمة 1 تعطي first، و 0 تعطي second، و 0.5 نقطة المنتصف. مثال: [0,0,0] و [10,10,10] عند 0.5 -> [5,5,5]

      Parameters

      Returns number[]

      المتجه الممزوج

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

    extract

    • يجد أكبر قيمة في متجه.

      مثال: [3, 7, 2, 9, 1] -> 9

      Parameters

      Returns number

      أكبر مدخل

      const largest = bitbybit.vector.max({ vector: [3, 7, 2, 9, 1] });
      
    • يجد أصغر قيمة في متجه.

      مثال: [3, 7, 2, 9, 1] -> 1

      Parameters

      Returns number

      أصغر مدخل

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

    remove

    • يزيل كل متجه مكرر من قائمة، مع الاحتفاظ بأول ظهور لكل منها.

      يُعدّ متجهان متطابقين عندما يختلف كل مدخل بأقل من tolerance. مثال: [[1,2,3], [4,5,6], [1,2,3], [7,8,9]] -> [[1,2,3], [4,5,6], [7,8,9]]

      Parameters

      Returns number[][]

      المتجهات بدون تكرارات، بترتيبها الأصلي

      const unique = bitbybit.vector.removeAllDuplicateVectors({
      vectors: [[1, 2, 3], [4, 5, 6], [1, 2, 3]],
      tolerance: 1e-7,
      });
    • يزيل المتجه عندما يكرر المتجه الذي يسبقه مباشرة؛ ويُحتفظ بالمتجه نفسه إذا كان أبعد.

      مع تفعيل checkFirstAndLast، يُحذف أيضاً المتجه الأخير الذي يكرر الأول، وهو ما يغلق حلقة من النقاط بشكل نظيف. المدخلات التي تقع ضمن tolerance من بعضها تُعدّ متساوية. مثال: [[1,2], [1,2], [3,4], [1,2]] -> [[1,2], [3,4], [1,2]]

      Parameters

      Returns number[][]

      المتجهات بدون تكرارات متتالية

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

    sum

    • يجمع قائمة من المتجهات معاً مدخلاً بمدخل في متجه واحد.

      يحتوي الناتج على عدد المدخلات نفسه الذي يحتويه المتجه الأول. مثال: [[1,2,3], [4,5,6], [7,8,9]] -> [12,15,18]

      Parameters

      • inputs: VectorsDto

        المتجهات المراد جمعها

      Returns number[]

      متجه المجاميع

      const total = bitbybit.vector.addAll({ vectors: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] });
      
    • يجمع متجهين مدخلاً بمدخل.

      مثال: [1,2,3] + [4,5,6] -> [5,7,9]

      Parameters

      Returns number[]

      متجه المجاميع

      const sum = bitbybit.vector.add({ first: [1, 2, 3], second: [4, 5, 6] });
      
    • يخبر ما إذا كانت كل قيمة في قائمة من القيم المنطقية تساوي true.

      مثال: [true, true, true] -> true، [true, false, true] -> false

      Parameters

      • inputs: VectorBoolDto

        القيم المنطقية المراد فحصها

      Returns boolean

      true عندما لا يكون أي مدخل false

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

    validate

    • يخبر ما إذا كان متجهان متطابقين ضمن تفاوت، مدخلاً بمدخل.

      المتجهات ذات الأطوال المختلفة لا تكون متطابقة أبداً. مثال: [1,2,3] و [1.0001,2.0001,3.0001] بتفاوت 0.001 -> true

      Parameters

      Returns boolean

      true عندما يختلف كل مدخل بأقل من التفاوت

      const same = bitbybit.vector.vectorsTheSame({ vec1: [1, 2, 3], vec2: [1, 2, 3.0000001], tolerance: 1e-6 });
      
    • يعلّم أي مدخلات المتجه هي أرقام منتهية.

      مثال: [1, 2, Infinity, 3] -> [true, true, false, true]

      Parameters

      • inputs: VectorDto

        المتجه المراد فحصه

      Returns boolean[]

      قيمة منطقية واحدة لكل مدخل، true عندما يكون منتهيا

      const flags = bitbybit.vector.finite({ vector: [1, Infinity, 3] });
      
    • يخبر ما إذا كان المتجه بلا طول، أي أن كل مدخل يساوي 0 تماماً.

      مثال: [0,0,0] -> true، [0,0,0.001] -> false

      Parameters

      • inputs: VectorDto

        المتجه المراد فحصه

      Returns boolean

      true عندما يكون الطول 0

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