Bitbybit Docs
    Preparing search index...

    Class Line

    الخطوط المستقيمة بين نقطتين، محفوظة ككائنات بسيطة بالصيغة { start, end }، وصيغة القطعة [start, end] للشيء نفسه. تبني الدوال هنا الخطوط وتقيسها وتحولها، وتحول بين الصيغتين، وتضع نقاطا على طولها، وتجد أين يتقاطع خطان. الأطوال بوحدات النموذج.

    Index

    Constructors

    convert

    • يحوّل كائن خط إلى صيغة القطعة، وهي الزوج [start, end].

      مثال: { start: [0,0,0], end: [10,5,0] } -> [[0,0,0], [10,5,0]]

      Parameters

      Returns Segment3

      القطعة

    • يحوّل كل كائن خط إلى صيغة القطعة، وهي الزوج [start, end].

      مثال: ثلاثة خطوط -> ثلاث قطع، بالترتيب نفسه

      Parameters

      Returns Segment3[]

      قطعة واحدة لكل خط

    • يحوّل قطعة، وهي الزوج [start, end]، إلى كائن خط.

      مثال: [[0,0,0], [10,5,0]] -> { start: [0,0,0], end: [10,5,0] }

      Parameters

      Returns Line3

      الخط

    • يحوّل كل قطعة، وهي زوج [start, end]، إلى كائن خط.

      مثال: ثلاث قطع -> ثلاثة خطوط، بالترتيب نفسه

      Parameters

      Returns Line3[]

      خط واحد لكل قطعة

    create

    • يبني كائن خط من نقطة بداية ونقطة نهاية.

      مثال: البداية [0,0,0]، النهاية [10,5,0] -> { start: [0,0,0], end: [10,5,0] }

      Parameters

      Returns Line3

      كائن الخط

      const line = bitbybit.line.create({ start: [0, 0, 0], end: [10, 5, 0] });
      
    • يبني قطعة، وهي صيغة زوج النقاط للخط، من نقطة بداية ونقطة نهاية.

      مثال: البداية [0,0,0]، النهاية [10,5,0] -> [[0,0,0], [10,5,0]]

      Parameters

      Returns Segment3

      القطعة بصيغة [start, end]

      const segment = bitbybit.line.createSegment({ start: [0, 0, 0], end: [10, 5, 0] });
      
    • يصل كل نقطة بالتي تليها بخط، بحيث تصبح قائمة النقاط سلسلة من الخطوط.

      مثال: [[0,0,0], [5,0,0], [5,5,0]] -> خطان، من [0,0,0] إلى [5,0,0] ومن [5,0,0] إلى [5,5,0]

      Parameters

      Returns Line3[]

      خط واحد لكل زوج من النقاط المتجاورة

      const chain = bitbybit.line.linesBetweenPoints({ points: [[0, 0, 0], [5, 0, 0], [5, 5, 0]] });
      
    • يقرن كل نقطة بداية بنقطة النهاية الواقعة في الموضع نفسه ويصلهما بخط.

      الزوج الذي تتطابق نقطتاه لا يكوّن خطاً ويُستبعد. مثال: البدايات [[0,0,0], [5,0,0]] والنهايات [[0,5,0], [5,5,0]] -> خطان

      Parameters

      • inputs: LineStartEndPointsDto

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

      Returns Line3[]

      خط واحد لكل زوج، مع تخطي الأزواج التي طولها 0

      const rungs = bitbybit.line.linesBetweenStartAndEndPoints({
      startPoints: [[0, 0, 0], [5, 0, 0]],
      endPoints: [[0, 5, 0], [5, 5, 0]],
      });

    get

    • يقرأ نقطة بداية خط.

      مثال: { start: [0,0,0], end: [10,5,0] } -> [0,0,0]

      Parameters

      Returns Point3

      نقطة البداية

    • يقرأ نقطة نهاية خط.

      مثال: { start: [0,0,0], end: [10,5,0] } -> [10,5,0]

      Parameters

      Returns Point3

      نقطة النهاية

    • يقيس المسافة المستقيمة من بداية خط إلى نهايته.

      مثال: { start: [0,0,0], end: [3,4,0] } -> 5

      Parameters

      Returns number

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

    • يجد النقطة الواقعة عند كسر من الطريق على طول خط: 0 يعطي البداية، و 1 النهاية، و 0.5 المنتصف.

      الكسر الخارج عن المدى من 0 إلى 1 يستمر إلى ما بعد الطرفين. مثال: { start: [0,0,0], end: [10,0,0] } عند 0.5 -> [5,0,0]

      Parameters

      Returns Point3

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

      const middle = bitbybit.line.getPointOnLine({ line: { start: [0, 0, 0], end: [10, 0, 0] }, param: 0.5 });
      

    intersection

    • يجد النقطة التي يتقاطع عندها خطان.

      مع تفعيل checkSegmentsOnly، يجب أن يقع التقاطع ضمن القطعتين؛ وعند تعطيله، يمتد الخطان بلا نهاية. الخطوط المتوازية، والخطوط التي تمر ببعضها دون أن تلتقي، والقطع التي لا تصل إلى بعضها تعطي undefined. يحدد التفاوت مدى القرب الذي يُعدّ التقاءً. مثال: من [0,0,0] إلى [10,0,0] ومن [5,-5,0] إلى [5,5,0] -> [5,0,0]

      Parameters

      • inputs: LineLineIntersectionDto

        الخطان، وما إذا كان يبقى ضمن القطعتين، والتفاوت

      Returns Point3

      نقطة التقاطع، أو undefined عندما لا توجد

      const crossing = bitbybit.line.lineLineIntersection({
      line1: { start: [0, 0, 0], end: [10, 0, 0] },
      line2: { start: [5, -5, 0], end: [5, 5, 0] },
      checkSegmentsOnly: true,
      tolerance: 1e-6,
      });

    operations

    • يبدّل بداية خط ونهايته، بحيث يمتد في الاتجاه الآخر.

      مثال: { start: [0,0,0], end: [10,5,0] } -> { start: [10,5,0], end: [0,0,0] }

      Parameters

      Returns Line3

      خط جديد يسير في الاتجاه المعاكس

    transforms

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

      مثال: { start: [0,0,0], end: [10,0,0] } منقولاً بمقدار [5,5,0] -> { start: [5,5,0], end: [15,5,0] }

      Parameters

      Returns Line3

      خط جديد بطرفين محوّلين

      const moved = bitbybit.line.transformLine({
      line: { start: [0, 0, 0], end: [10, 0, 0] },
      transformation: bitbybit.transforms.translationXYZ({ translation: [5, 5, 0] }),
      });
    • يطبّق تحويلاً مختلفاً على كل خط: التحويل الأول على الخط الأول، وهكذا.

      مثال: ثلاثة خطوط مع ثلاث عمليات نقل -> يُنقل كل خط بعملية النقل الخاصة به

      Parameters

      Returns Line3[]

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

      const placed = bitbybit.line.transformsForLines({
      lines: [{ start: [0, 0, 0], end: [1, 0, 0] }, { start: [0, 0, 0], end: [0, 1, 0] }],
      transformation: bitbybit.transforms.translationsXYZ({ translations: [[0, 1, 0], [0, 2, 0]] }),
      });