Bitbybit Docs
    Preparing search index...

    Class Point

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

    Index

    Constructors

    clean

    • يزيل النقطة عندما تكرر النقطة التي تسبقها مباشرة؛ ويُحتفظ بالنقطة نفسها إذا كانت أبعد.

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

      Parameters

      Returns Point3[]

      النقاط بدون تكرارات متتالية

      const cleaned = bitbybit.point.removeConsecutiveDuplicates({
      points: [[0, 0, 0], [0, 0, 0], [1, 0, 0]],
      tolerance: 1e-7,
      checkFirstAndLast: false,
      });

    create

    • يبني نقطة ثلاثية الأبعاد من قيمها x و y و z.

      مثال: x=10, y=5, z=3 -> [10,5,3]

      Parameters

      Returns Point3

      النقطة [x, y, z]

      const point = bitbybit.point.pointXYZ({ x: 10, y: 5, z: 3 });
      
    • يبني نقطة ثنائية الأبعاد من قيمتيها x و y.

      مثال: x=10, y=5 -> [10,5]

      Parameters

      Returns Point2

      النقطة [x, y]

      const point = bitbybit.point.pointXY({ x: 10, y: 5 });
      
    • يوزع النقاط على طول حلزون لوغاريتمي في المستوى XY، من نقطة الأصل إلى الخارج حتى radius.

      numberPoints يحدد عدد النقاط الموضوعة، و phi و widening مدى سرعة انفتاح الحلزون، و factor أين يبدأ على طول المنحنى. كل نقطة لها z = 0.

      Parameters

      • inputs: SpiralDto

        عدد النقاط ونصف القطر وشكل الحلزون

      Returns Point3[]

      النقاط على طول الحلزون، من المركز إلى الخارج

      const points = bitbybit.point.spiral({ phi: 0.9, numberPoints: 100, widening: 3, radius: 10, factor: 1 });
      
    • يوزع مراكز خلية نحل من السداسيات في المستوى XY.

      radiusHexagon هو المسافة من مركز السداسي إلى زاوية؛ الأعمدة تمتد على طول X والصفوف على طول Y، وكل صف ثانٍ مزاح بنصف عمود. orientOnCenter يمركز الشبكة على نقطة الأصل، و pointsOnGround يضعها على المستوى XZ.

      Parameters

      • inputs: HexGridCentersDto

        حجم السداسي وعدد الأعمدة والصفوف ومكان وضع الشبكة

      Returns Point3[]

      نقاط المراكز، صفا صفا

      const centers = bitbybit.point.hexGrid({ radiusHexagon: 1, nrHexagonsX: 5, nrHexagonsY: 4, orientOnCenter: true, pointsOnGround: false });
      
    • يوزع خلية نحل من السداسيات تملأ عرضاً وارتفاعاً معطيين، مع تحديد حجم السداسيات من الأعداد.

      يحمل الناتج نقاط المراكز والزوايا الست لكل سداسي. تشير زاوية إلى الأعلى ما لم يُضبط flatTop؛ وأعلام التمديد تمدد الصفوف الخارجية إلى ما بعد الحواف لتغطية المستطيل دون حدود متعرجة.

      Parameters

      • inputs: HexGridScaledToFitDto

        المساحة المراد ملؤها وأعداد السداسيات والتوجيه وخيارات الوضع

      Returns HexGridData

      المراكز ونقاط الزوايا لكل سداسي

      const grid = bitbybit.point.hexGridScaledToFit({
      width: 10,
      height: 10,
      nrHexagonsInWidth: 5,
      nrHexagonsInHeight: 5,
      flatTop: false,
      centerGrid: true,
      });
    • يجد الاتجاه العمودي على المستوى المار بثلاث نقاط، بطول 1.

      يتبع الاتجاه قاعدة اليد اليمنى بالانتقال من النقطة الأولى إلى الثانية إلى الثالثة؛ و reverseNormal يقلبه. النقاط الواقعة على خط واحد ليس لها مستوى، لذا يكون الناتج undefined. مثال: [0,0,0], [1,0,0], [0,1,0] -> [0,0,1]

      Parameters

      Returns Vector3

      الناظم الوحدوي، أو undefined عندما تكون النقاط على خط واحد

      const normal = bitbybit.point.normalFromThreePoints({
      point1: [0, 0, 0],
      point2: [1, 0, 0],
      point3: [0, 1, 0],
      reverseNormal: false,
      });

    extract

    • يجد أصغر صندوق محاذٍ للمحاور يحتوي كل النقاط.

      يحمل الناتج الزاويتين الدنيا والقصوى، والمركز، والعرض (X) والارتفاع (Y) والطول (Z). مثال: النقاط [[0,0,0], [10,5,3]] -> الحد الأدنى [0,0,0]، الحد الأقصى [10,5,3]، المركز [5,2.5,1.5]

      Parameters

      Returns BoundingBox

      الصندوق المحيط بزواياه ومركزه وأحجامه

      const box = bitbybit.point.boundingBoxOfPoints({ points: [[0, 0, 0], [10, 5, 3], [-2, 1, 1]] });
      
    • يقيس المسافة من نقطة إلى أقرب نقطة في قائمة.

      مثال: النقطة [0,0,0] والنقاط [[5,0,0], [10,0,0], [3,0,0]] -> 3

      Parameters

      • inputs: ClosestPointFromPointsDto

        النقطة المراد القياس منها والنقاط المراد البحث فيها

      Returns number

      المسافة إلى أقرب نقطة، بوحدات النموذج

      const nearest = bitbybit.point.closestPointFromPointsDistance({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • يجد موضع أقرب نقطة في قائمة، بالعدّ من 1.

      مثال: النقطة [0,0,0] والنقاط [[5,0,0], [10,0,0], [3,0,0]] -> 3

      Parameters

      • inputs: ClosestPointFromPointsDto

        النقطة المراد القياس منها والنقاط المراد البحث فيها

      Returns number

      فهرس أقرب نقطة بدءا من 1

      const index = bitbybit.point.closestPointFromPointsIndex({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • يجد أقرب نقطة في قائمة إلى نقطة معطاة.

      مثال: النقطة [0,0,0] والنقاط [[5,0,0], [10,0,0], [3,0,0]] -> [3,0,0]

      Parameters

      • inputs: ClosestPointFromPointsDto

        النقطة المراد القياس منها والنقاط المراد البحث فيها

      Returns Point3

      أقرب نقطة

      const nearest = bitbybit.point.closestPointFromPoints({ point: [0, 0, 0], points: [[5, 0, 0], [3, 0, 0]] });
      
    • يجد متوسط النقاط، وهو مركز كتلتها عندما تكون أوزانها متساوية.

      مثال: [[0,0,0], [10,0,0], [10,10,0]] -> [6.67,3.33,0]

      Parameters

      Returns Point3

      النقطة المتوسطة

      const center = bitbybit.point.averagePoint({ points: [[0, 0, 0], [10, 0, 0], [10, 10, 0]] });
      

    fillet

    • يجد أكبر تقويس يناسب زاوية: يلامس القوس كلتا القطعتين ويبقى داخلهما.

      الزاوية هي end؛ و start و center هما الطرفان البعيدان للقطعتين اللتين تلتقيان هناك. نصف القطر محدود بالقطعة الأقصر. الزاوية المستقيمة أو المطوية للخلف، أو القطعة الأقصر من tolerance، تعطي 0.

      Parameters

      • inputs: ThreePointsToleranceDto

        الطرف البعيد لكل قطعة والزاوية المشتركة بينهما والتفاوت

      Returns number

      أكبر نصف قطر تقويس، بوحدات النموذج

      const radius = bitbybit.point.maxFilletRadius({ start: [10, 0, 0], center: [0, 10, 0], end: [0, 0, 0], tolerance: 1e-7 });
      
    • يجد أكبر تقويس عند زاوية يلامس قوسه كل قطعة ضمن نصفها الأقرب، بحيث يمكن تقويس الزوايا المتجاورة في خط متعدد الأضلاع دون تداخل الأقواس.

      الزاوية هي end؛ و start و center هما الطرفان البعيدان للقطعتين. الزاوية المستقيمة أو المطوية للخلف، أو القطعة الأقصر من tolerance، تعطي 0.

      Parameters

      • inputs: ThreePointsToleranceDto

        الطرف البعيد لكل قطعة والزاوية المشتركة بينهما والتفاوت

      Returns number

      أكبر نصف قطر تقويس وفق قاعدة نصف القطعة، بوحدات النموذج

      const radius = bitbybit.point.maxFilletRadiusHalfLine({ start: [10, 0, 0], center: [0, 10, 0], end: [0, 0, 0], tolerance: 1e-7 });
      
    • يجد أكبر تقويس لكل زاوية في خط متعدد الأضلاع، كل منها محدود بالنصف الأقرب من قطعتيه بحيث لا تتداخل التقويسات أبداً.

      مع تفعيل checkLastWithFirst، يُعامل الخط متعدد الأضلاع كمغلق وتُضمَّن الزاويتان عند الطرفين. أقل من ثلاث نقاط تعطي قائمة فارغة.

      Parameters

      Returns number[]

      نصف قطر واحد لكل زاوية، بترتيب الزوايا

      const radii = bitbybit.point.maxFilletsHalfLine({
      points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]],
      checkLastWithFirst: true,
      tolerance: 1e-7,
      });
    • يجد نصف قطر تقويس واحداً يناسب كل زاوية في خط متعدد الأضلاع: الأصغر من الحدود القصوى لكل زاوية وفق قاعدة نصف القطعة.

      مع تفعيل checkLastWithFirst، يُعامل الخط متعدد الأضلاع كمغلق. أقل من ثلاث نقاط، أو أي زاوية لا تسمح بأي تقويس، تعطي 0.

      Parameters

      Returns number

      نصف القطر الذي يلائم كل زاوية، بوحدات النموذج

      const radius = bitbybit.point.safestPointsMaxFilletHalfLine({
      points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]],
      checkLastWithFirst: true,
      tolerance: 1e-7,
      });

    get

    • يقرأ قيمة Y لنقطة، وهي التي تشير إلى الأعلى.

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

      Parameters

      Returns number

      قيمة Y

    measure

    • يقيس المسافة المستقيمة بين نقطتين.

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

      Parameters

      Returns number

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

      const d = bitbybit.point.distance({ startPoint: [0, 0, 0], endPoint: [3, 4, 0] });
      
    • يقيس المسافة من نقطة واحدة إلى كل نقطة في قائمة.

      مثال: البداية [0,0,0] ونقاط النهاية [[3,0,0], [0,4,0], [5,0,0]] -> [3, 4, 5]

      Parameters

      • inputs: StartEndPointsListDto

        نقطة البداية والنقاط المراد القياس إليها

      Returns number[]

      مسافة واحدة لكل نقطة نهاية، بالترتيب نفسه

      const distances = bitbybit.point.distancesToPoints({ startPoint: [0, 0, 0], endPoints: [[3, 0, 0], [0, 4, 0]] });
      
    • يخبر ما إذا كانت نقطتان أقرب إلى بعضهما من تفاوت.

      مثال: [1.0000001, 2, 3] و [1, 2, 3] بتفاوت 1e-6 -> true

      Parameters

      Returns boolean

      true عندما تكون المسافة بينهما أقل من التفاوت

      const same = bitbybit.point.twoPointsAlmostEqual({ point1: [1, 2, 3], point2: [1, 2, 3.0000001], tolerance: 1e-6 });
      

    sort

    • يرتب النقاط حسب X، ثم حسب Y عند تساوي X، ثم حسب Z.

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

      Parameters

      Returns Point3[]

      نسخة مرتبة من النقاط

      const sorted = bitbybit.point.sortPoints({ points: [[5, 0, 0], [1, 0, 0], [3, 0, 0]] });
      

    transforms

    • يطبّق مصفوفة تحويل، أو قائمة منها بالترتيب، على نقطة واحدة.

      مثال: النقطة [0,0,0] مع نقل بمقدار [5,5,0] -> [5,5,0]

      Parameters

      Returns Point3

      النقطة المحوّلة

      const moved = bitbybit.point.transformPoint({
      point: [0, 0, 0],
      transformation: bitbybit.transforms.translationXYZ({ translation: [5, 5, 0] }),
      });
    • يطبّق مصفوفة التحويل نفسها، أو قائمة منها بالترتيب، على كل نقطة.

      مثال: خمس نقاط مع تدوير بمقدار 90 درجة -> تُدوَّر النقاط الخمس معاً

      Parameters

      • inputs: TransformPointsDto

        النقاط والتحويل المراد تطبيقه على كل منها

      Returns Point3[]

      النقاط المحوّلة، بالترتيب نفسه

      const rotated = bitbybit.point.transformPoints({
      points: [[1, 0, 0], [2, 0, 0]],
      transformation: bitbybit.transforms.rotationCenterAxis({ center: [0, 0, 0], axis: [0, 1, 0], angle: 90 }),
      });
    • يطبّق تحويلاً مختلفاً على كل نقطة: التحويل الأول على النقطة الأولى، وهكذا.

      يجب أن يكون للقائمتين الطول نفسه، وإلا يُرمى خطأ. مثال: ثلاث نقاط مع ثلاثة عمليات نقل -> تُنقل كل نقطة بعملية النقل الخاصة بها

      Parameters

      Returns Point3[]

      النقاط المحوّلة، بالترتيب نفسه

      const placed = bitbybit.point.transformsForPoints({
      points: [[0, 0, 0], [1, 0, 0]],
      transformation: bitbybit.transforms.translationsXYZ({ translations: [[0, 1, 0], [0, 2, 0]] }),
      });
    • ينقل كل نقطة بالمتجه نفسه.

      مثال: النقاط [[0,0,0], [1,0,0]] بمقدار [5,5,0] -> [[5,5,0], [6,5,0]]

      Parameters

      • inputs: TranslatePointsDto

        النقاط والمتجه المراد نقلها بمقداره

      Returns Point3[]

      النقاط المنقولة، بالترتيب نفسه

      const moved = bitbybit.point.translatePoints({ points: [[0, 0, 0], [1, 0, 0]], translation: [5, 5, 0] });
      
    • ينقل كل نقطة بمتجهها الخاص: النقطة الأولى بالمتجه الأول، وهكذا.

      يجب أن يكون للقائمتين الطول نفسه، وإلا يُرمى خطأ. مثال: ثلاث نقاط مع ثلاثة متجهات -> تُنقل كل نقطة بمتجهها الخاص

      Parameters

      Returns Point3[]

      النقاط المنقولة، بالترتيب نفسه

      const moved = bitbybit.point.translatePointsWithVectors({
      points: [[0, 0, 0], [1, 0, 0]],
      translations: [[0, 1, 0], [0, 2, 0]],
      });
    • ينقل كل نقطة بالمقادير المعطاة على x و y و z.

      مثال: النقطة [0,0,0] مع x=10, y=5, z=0 -> [10,5,0]

      Parameters

      Returns Point3[]

      النقاط المنقولة، بالترتيب نفسه

      const lifted = bitbybit.point.translateXYZPoints({ points: [[0, 0, 0], [1, 0, 0]], x: 0, y: 5, z: 0 });
      
    • يحجّم النقاط بعيداً عن مركز أو نحوه، بعامل خاص لكل محور.

      مثال: النقطة [10,0,0] حول المركز [5,0,0] بالعوامل [2,1,1] -> [15,0,0]

      Parameters

      • inputs: ScalePointsCenterXYZDto

        النقاط والمركز الذي يتم التحجيم حوله والمعامل لكل محور

      Returns Point3[]

      النقاط المحجّمة، بالترتيب نفسه

      const stretched = bitbybit.point.scalePointsCenterXYZ({
      points: [[10, 0, 0], [0, 10, 0]],
      center: [0, 0, 0],
      scaleXyz: [2, 1, 1],
      });
    • يمدد النقاط على طول اتجاه واحد، مقاساً من مركز؛ وتبقى المسافات عبر ذلك الاتجاه كما هي.

      مثال: النقطة [10,0,0] من المركز [0,0,0] على طول [1,0,0] بتحجيم 2 -> [20,0,0]

      Parameters

      Returns Point3[]

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

      const taller = bitbybit.point.stretchPointsDirFromCenter({
      points: [[0, 1, 0], [0, 2, 0]],
      center: [0, 0, 0],
      direction: [0, 1, 0],
      scale: 2,
      });
    • يدوّر النقاط حول محور يمر عبر مركز.

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

      Parameters

      • inputs: RotatePointsCenterAxisDto

        النقاط واتجاه المحور والمركز الذي يمر به والزاوية بالدرجات

      Returns Point3[]

      النقاط المدوّرة، بالترتيب نفسه

      const turned = bitbybit.point.rotatePointsCenterAxis({
      points: [[10, 0, 0]],
      center: [0, 0, 0],
      axis: [0, 1, 0],
      angle: 90,
      });
    • يكرر نقطة واحدة عدداً معيناً من المرات في قائمة.

      مثال: النقطة [5,5,0] ثلاث مرات -> [[5,5,0], [5,5,0], [5,5,0]]

      Parameters

      • inputs: MultiplyPointDto

        النقطة وعدد النسخ المراد إنشاؤها

      Returns Point3[]

      قائمة النسخ

      const copies = bitbybit.point.multiplyPoint({ point: [5, 5, 0], amountOfPoints: 3 });