Bitbybit Docs
    Preparing search index...

    Class Polyline

    الخطوط متعددة الأضلاع: سلاسل من القطع المستقيمة عبر قائمة من النقاط، محفوظة ككائنات بسيطة بالصيغة { points, isClosed }. يصل الخط متعدد الأضلاع المغلق نقطته الأخيرة بالأولى. تقيس الدوال هنا الخط متعدد الأضلاع، وتحوله إلى قطع أو خطوط، وتجد أين تتقاطع الخطوط متعددة الأضلاع، وترتب القطع المنفصلة في سلاسل، وتحدد أحجام التقويسات لزواياه. الأطوال بوحدات النموذج.

    Index

    Constructors

    convert

    • يعكس ترتيب النقاط، بحيث يمتد الخط متعدد الأضلاع في الاتجاه الآخر.

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

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      خط متعدد الأضلاع بنقاط بترتيب معكوس

      const back = bitbybit.polyline.reverse({ polyline: { points: [[0, 0, 0], [1, 0, 0], [2, 0, 0]] } });
      
    • يقسم الخط متعدد الأضلاع إلى كائنات خطوط، واحد لكل قطعة، لكل منها نقطة بداية ونقطة نهاية.

      يحصل الخط متعدد الأضلاع المغلق أيضاً على القطعة من نقطته الأخيرة عائدة إلى الأولى، ما لم تتطابق النقطتان. مثال: ثلاث نقاط -> خطان، أو ثلاثة عند الإغلاق

      Parameters

      Returns Line3[]

      خط واحد لكل قطعة، بالترتيب

      const lines = bitbybit.polyline.polylineToLines({ polyline: { points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: true } });
      
    • يقسم الخط متعدد الأضلاع إلى قطع، كل منها زوج من النقاط.

      يحصل الخط متعدد الأضلاع المغلق أيضاً على القطعة من نقطته الأخيرة عائدة إلى الأولى، ما لم تتطابق النقطتان. أقل من نقطتين لا تعطي أي قطع. مثال: أربع نقاط، مغلق -> أربع قطع حول الحلقة

      Parameters

      Returns Segment3[]

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

      const segments = bitbybit.polyline.polylineToSegments({ polyline: { points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: false } });
      

    create

    • يبني كائن خط متعدد الأضلاع من نقاط، مفتوحاً أو مغلقاً.

      مثال: ثلاث نقاط مع isClosed بقيمة true -> مثلث

      Parameters

      • inputs: PolylineCreateDto

        النقاط وما إذا كانت الأخيرة تعود لتتصل بالأولى

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      كائن الخط متعدد الأضلاع

      const triangle = bitbybit.polyline.create({ points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: true });
      

    fillet

    • يجد أكبر تقويس لكل زاوية في الخط متعدد الأضلاع، كل منها محدود بالنصف الأقرب من قطعتيه بحيث لا تتداخل التقويسات أبداً.

      يتضمن الخط متعدد الأضلاع المغلق الزاويتين عند طرفيه. أقل من ثلاث نقاط تعطي قائمة فارغة.

      Parameters

      Returns number[]

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

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

      أقل من ثلاث نقاط، أو أي زاوية لا تسمح بأي تقويس، تعطي 0.

      Parameters

      Returns number

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

      const radius = bitbybit.polyline.safestFilletRadius({
      polyline: { points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]], isClosed: true },
      tolerance: 1e-7,
      });

    get

    • يقيس الخط متعدد الأضلاع بجمع المسافات المستقيمة بين النقاط المتجاورة.

      لا تُحتسب قطعة الإغلاق في الخط متعدد الأضلاع المغلق. مثال: [[0,0,0], [3,0,0], [3,4,0]] -> 7

      Parameters

      Returns number

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

      const len = bitbybit.polyline.length({ polyline: { points: [[0, 0, 0], [3, 0, 0], [3, 4, 0]] } });
      
    • يعدّ نقاط الخط متعدد الأضلاع.

      مثال: ثلاث نقاط -> 3

      Parameters

      Returns number

      عدد النقاط

    • يقرأ قائمة النقاط من الخط متعدد الأضلاع.

      مثال: { points: [[0,0,0], [1,0,0]] } -> [[0,0,0], [1,0,0]]

      Parameters

      Returns Point3[]

      نقاطه، بالترتيب

    intersection

    • يجد النقاط التي يتقاطع عندها خطان متعددا الأضلاع، باختبار كل قطعة من أحدهما ضد كل قطعة من الآخر.

      التقاطعات الأقرب إلى بعضها من التفاوت يُبلّغ عنها مرة واحدة. مثال: خطان متعددا الأضلاع يشكلان حرف X -> النقطة في المنتصف

      Parameters

      Returns Point3[]

      نقاط التقاطع؛ فارغة عندما لا توجد

      const crossings = bitbybit.polyline.twoPolylineIntersection({
      polyline1: { points: [[0, 0, 0], [2, 2, 0]] },
      polyline2: { points: [[0, 2, 0], [2, 0, 0]] },
      tolerance: 1e-6,
      });

    intersections

    • يجد النقاط التي يتقاطع عندها الخط متعدد الأضلاع مع نفسه.

      لا تُختبر القطع المتجاورة ضد بعضها، والتقاطعات الأقرب إلى بعضها من التفاوت يُبلّغ عنها مرة واحدة. مثال: شكل الرقم ثمانية -> نقطة تقاطعه الوحيدة

      Parameters

      Returns Point3[]

      نقاط التقاطع؛ فارغة عندما لا توجد

      const crossings = bitbybit.polyline.polylineSelfIntersection({
      polyline: { points: [[0, 0, 0], [2, 2, 0], [2, 0, 0], [0, 2, 0]] },
      tolerance: 1e-6,
      });

    sort

    • يصل القطع المتفرقة في خطوط متعددة الأضلاع بمطابقة الأطراف التي تلتقي ضمن التفاوت.

      القطع المتصلة طرفاً بطرف تصبح خطاً متعدد الأضلاع واحداً لكل سلسلة؛ والقطع التي لا تلامس شيئاً تصبح خطوطاً متعددة الأضلاع من قطعة واحدة. مثال: عشر قطع متناثرة تشكل سلسلتين -> خطان متعددا الأضلاع

      Parameters

      • inputs: SegmentsToleranceDto

        القطع والتفاوت الذي يُعد عنده طرفان متلامسين

      Returns Polyline3[]

      الخطوط متعددة الأضلاع التي تشكلها القطع

      const chains = bitbybit.polyline.sortSegmentsIntoPolylines({
      segments: [[[0, 0, 0], [1, 0, 0]], [[1, 0, 0], [1, 1, 0]], [[5, 5, 0], [6, 5, 0]]],
      tolerance: 1e-5,
      });

    transforms

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

      مثال: نقل بمقدار [5,0,0] -> تُنقل كل نقطة بمقدار 5 على طول X

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      خط متعدد الأضلاع جديد بالنقاط المحوّلة

      const moved = bitbybit.polyline.transformPolyline({
      polyline: { points: [[0, 0, 0], [1, 0, 0]] },
      transformation: bitbybit.transforms.translationXYZ({ translation: [5, 0, 0] }),
      });