# [name]

فئة تمثل متجه 2D [link:https://en.wikipedia.org/wiki/Vector_space]. متجه 2D هو زوج مرتب من الأرقام (مسمى x و y)، والذي يمكن استخدامه لتمثيل عدد من الأشياء، مثل:

- نقطة في الفضاء 2D (أي موضع على مستوى).
- اتجاه وطول عبر مستوى. في three.js سيكون الطول دائمًا [link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي] (طول الخط المستقيم) من `(0، 0)` إلى `(x، y)` ويتم قياس الاتجاه أيضًا من `(0، 0)` نحو `(x، y)`.
- أي زوج مرتب عشوائي من الأرقام.

هناك أشياء أخرى يمكن استخدام متجه 2D لتمثيلها، مثل المتجهات الزخمية، والأعداد المركبة وما إلى ذلك، ومع ذلك فإن هذه هي الاستخدامات الأكثر شيوعًا في three.js.

التكرار عبر نسخة [name] سيعود بمكوناته `(x، y)` بالترتيب المقابل.

## مثال للكود

`const a = new THREE.Vector2( 0, 1 ); //no arguments; will be initialised to (0, 0) const b = new THREE.Vector2( ); const d = a.distanceTo( b );`

## المنشئ (Constructor)

### [name]( [param:Float x], [param:Float y] )

[page:Float x] - قيمة x لهذا المتجه. الافتراضي هو `0`.
[page:Float y] - قيمة y لهذا المتجه. الافتراضي هو `0`.
ينشئ نسخة جديدة من [name].

## الخصائص (Properties)

### [property:Float height]

اسم آخر لـ [page:.y y].

### [property:Boolean isVector2]

علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى من نوع [name].

### [property:Float width]

اسم آخر لـ [page:.x x].

### [property:Float x]

### [property:Float y]

## الطرق (Methods)

### [method:this add]( [param:Vector2 v] )

يضيف [page:Vector2 v] إلى هذا المتجه.

### [method:this addScalar]( [param:Float s] )

يضيف القيمة القياسية [page:Float s] إلى قيم [page:.x x] و [page:.y y] لهذا المتجه.

### [method:this addScaledVector]( [param:Vector2 v], [param:Float s] )

يضيف الضعف من [page:Vector2 v] و [page:Float s] إلى هذا المتجه.

### [method:this addVectors]( [param:Vector2 a], [param:Vector2 b] )

يضبط هذا المتجه على [page:Vector2 a] + [page:Vector2 b].

### [method:Float angle]()

يحسب الزاوية بالراديان لهذا المتجه بالنسبة للمحور x الموجب.

### [method:Float angleTo]( [param:Vector2 v] )

يعود بالزاوية بين هذا المتجه والمتجه [page:Vector2 v] بالراديان.

### [method:this applyMatrix3]( [param:Matrix3 m] )

يضرب هذا المتجه (مع 1 ضمني كمكون الثالث) في m.

### [method:this ceil]()

تتم جولة مكونات [page:.x x] و [page:.y y] لهذا المتجه إلى أعلى إلى أقرب قيمة صحيحة.

### [method:this clamp]( [param:Vector2 min], [param:Vector2 max] )

[page:Vector2 min] - الحد الأدنى لقيم x و y.
[page:Vector2 max] - الحد الأقصى لقيم x و y في النطاق المطلوب
إذا كانت قيمة x أو y لهذا المتجه أكبر من قيمة x أو y للمتجه max، يتم استبدالها بالقيمة المقابلة.
إذا كانت قيمة x أو y لهذا المتجه أقل من قيمة x أو y للمتجه min، يتم استبدالها بالقيمة المقابلة.

### [method:this clampLength]( [param:Float min], [param:Float max] )

[page:Float min] - الحد الأدنى الذي سيتم تثبيت الطول عليه
[page:Float max] - الحد الأقصى الذي سيتم تثبيت الطول عليه
إذا كان طول هذا المتجه أكبر من قيمة max، يتم استبداله بالقيمة max.
إذا كان طول هذا المتجه أقل من قيمة min، يتم استبداله بالقيمة min.

### [method:this clampScalar]( [param:Float min], [param:Float max] )

[page:Float min] - الحد الأدنى الذي ستُثبَّت عليه العناصر
[page:Float max] - الحد الأقصى الذي سُتثبَّت عليه العناصر
إذا كانت قيم x أو y لهذا المتجه أكبر من قيمة max، يتم استبدالها بالقيمة max.
إذا كانت قيم x أو y لهذا المتجه أقل من قيمة min، يتم استبدالها بالقيمة min.

### [method:Vector2 clone]()

يعود بـ Vector2 جديد بنفس قيم [page:.x x] و [page:.y y] كهذا.

### [method:this copy]( [param:Vector2 v] )

ينسخ قيم خصائص [page:.x x] و [page:.y y] لـ Vector2 الممرر إلى هذا Vector2.

### [method:Float distanceTo]( [param:Vector2 v] )

يحسب المسافة من هذا المتجه إلى [page:Vector2 v].

### [method:Float manhattanDistanceTo]( [param:Vector2 v] )

يحسب [link:https://en.wikipedia.org/wiki/Taxicab_geometry مسافة مانهاتن] من هذا المتجه إلى [page:Vector2 v].

### [method:Float distanceToSquared]( [param:Vector2 v] )

يحسب المسافة المربعة من هذا المتجه إلى [page:Vector2 v]. إذا كنت تقارن فقط المسافة مع مسافة أخرى، يجب عليك مقارنة المسافة المربعة بدلاً من ذلك لأنه أكثر كفاءة قليلاً في الحساب.

### [method:this divide]( [param:Vector2 v] )

يقسم هذا المتجه على [page:Vector2 v].

### [method:this divideScalar]( [param:Float s] )

يقسم هذا المتجه على العدد القياسي [page:Float s].

### [method:Float dot]( [param:Vector2 v] )

يحسب [link:https://en.wikipedia.org/wiki/Dot_product حاصل الضرب النقطي] لهذا المتجه و [page:Vector2 v].

### [method:Float cross]( [param:Vector2 v] )

يحسب [link:https://en.wikipedia.org/wiki/Cross_product حاصل الضرب المتقاطع] لهذا المتجه و [page:Vector2 v]. يرجى ملاحظة أن "حاصل الضرب المتقاطع" في 2D غير محدد بشكل جيد. تحسب هذه الوظيفة حاصل ضرب متقاطع هندسي يستخدم في الغالب في رسومات 2D

### [method:Boolean equals]( [param:Vector2 v] )

يعود بـ `true` إذا كانت مكونات هذا المتجه و [page:Vector2 v] متطابقة بدقة؛ `false` في حالة عدم ذلك.

### [method:this floor]()

تتم جولة مكونات هذا المتجه إلى أسفل إلى أقرب قيمة صحيحة.

### [method:this fromArray]( [param:Array array], [param:Integer offset] )

[page:Array array] - المصفوفة المصدر.
[page:Integer offset] - (اختياري) إزاحة في المصفوفة. الافتراضي هو 0.
يضبط قيمة [page:.x x] لهذا المتجه على `array[ offset ]` وقيمة [page:.y y] على `array[ offset + 1 ]`.

### [method:this fromBufferAttribute]( [param:BufferAttribute attribute], [param:Integer index] )

[page:BufferAttribute attribute] - السمة المصدر.
[page:Integer index] - فهرس في السمة.
يضبط قيم [page:.x x] و [page:.y y] لهذا المتجه من [page:BufferAttribute attribute].

### [method:Float getComponent]( [param:Integer index] )

[page:Integer index] - 0 أو 1.
إذا كان index يساوي 0 يعود بقيمة [page:.x x].
إذا كان index يساوي 1 يعود بقيمة [page:.y y].

### [method:Float length]()

يحسب [link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي] (طول الخط المستقيم) من (0، 0) إلى (x، y).

### [method:Float manhattanLength]()

يحسب [link:http://en.wikipedia.org/wiki/Taxicab_geometry طول مانهاتن] لهذا المتجه.

### [method:Float lengthSq]()

يحسب مربع [link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي] (طول الخط المستقيم) من (0، 0) إلى (x، y). إذا كنت تقارن أطوال المتجهات، يجب عليك مقارنة الطول المربع بدلاً من ذلك لأنه أكثر كفاءة قليلاً في الحساب.

### [method:this lerp]( [param:Vector2 v], [param:Float alpha] )

[page:Vector2 v] - [page:Vector2] للتداخل نحوه.
[page:Float alpha] - عامل التداخل، عادة في الفترة المغلقة `[0، 1]`.
يتداخل بشكل خطي بين هذا المتجه و [page:Vector2 v]، حيث alpha هو نسبة المسافة على طول الخط - سيكون alpha = 0 هذا المتجه، وسيكون alpha = 1 [page:Vector2 v].

### [method:this lerpVectors]( [param:Vector2 v1], [param:Vector2 v2], [param:Float alpha] )

[page:Vector2 v1] - [page:Vector2] البداية.
[page:Vector2 v2] - [page:Vector2] للتداخل نحوه.
[page:Float alpha] - عامل التداخل، عادة في الفترة المغلقة `[0، 1]`.
يضبط هذا المتجه ليكون المتجه المُركب بشكل خطي بين [page:Vector2 v1] و [page:Vector2 v2] حيث alpha هو نسبة المسافة على طول الخط الذي يربط بين المتجهين - سيكون alpha = 0 [page:Vector2 v1]، وسيكون alpha = 1 [page:Vector2 v2].

### [method:this negate]()

يعكس هذا المتجه - أي يضع x = -x و y = -y.

### [method:this normalize]()

يحول هذا المتجه إلى [link:https://en.wikipedia.org/wiki/Unit_vector متجه وحدة] - أي يضعه مساوٍ لمتجه بنفس الاتجاه كهذا، ولكن [page:.length length] 1.

### [method:this max]( [param:Vector2 v] )

إذا كانت قيمة x أو y لهذا المتجه أقل من قيمة x أو y لـ [page:Vector2 v]، استبدل تلك القيمة بالقيمة العظمى المقابلة.

### [method:this min]( [param:Vector2 v] )

إذا كانت قيمة x أو y لهذا المتجه أكبر من قيمة x أو y لـ [page:Vector2 v]، استبدل تلك القيمة بالقيمة الدنيا المقابلة.

### [method:this multiply]( [param:Vector2 v] )

يضرب هذا المتجه في [page:Vector2 v].

### [method:this multiplyScalar]( [param:Float s] )

يضرب هذا المتجه في العدد القياسي [page:Float s].

### [method:this rotateAround]( [param:Vector2 center], [param:Float angle] )

[page:Vector2 center] - النقطة التي يتم التدوير حولها.
[page:Float angle] - الزاوية التي يتم التدوير بها، بالراديان.
يدور هذا المتجه حول [page:Vector2 center] بـ [page:Float angle] راديان.

### [method:this round]()

تتم جولة مكونات هذا المتجه إلى أقرب قيمة صحيحة.

### [method:this roundToZero]()

تتم جولة مكونات هذا المتجه نحو الصفر (لأعلى إذا كان سالبًا، لأسفل إذا كان موجبًا) إلى قيمة صحيحة.

### [method:this set]( [param:Float x], [param:Float y] )

يضبط مكونات [page:.x x] و [page:.y y] لهذا المتجه.

### [method:this setComponent]( [param:Integer index], [param:Float value] )

[page:Integer index] - 0 أو 1.
[page:Float value] - [page:Float]
إذا كان index يساوي 0 ضع [page:.x x] على [page:Float value].
إذا كان index يساوي 1 ضع [page:.y y] على [page:Float value]

### [method:this setLength]( [param:Float l] )

يضبط هذا المتجه على متجه بنفس الاتجاه كهذا، ولكن [page:.length length] [page:Float l].

### [method:this setScalar]( [param:Float scalar] )

يضبط قيم [page:.x x] و [page:.y y] لهذا المتجه على حد سواء مساوية لـ [page:Float scalar].

### [method:this setX]( [param:Float x] )

يستبدل قيمة [page:.x x] لهذا المتجه بـ [page:Float x].

### [method:this setY]( [param:Float y] )

يستبدل قيمة [page:.y y] لهذا المتجه بـ [page:Float y].

### [method:this sub]( [param:Vector2 v] )

يطرح [page:Vector2 v] من هذا المتجه.

### [method:this subScalar]( [param:Float s] )

يطرح [page:Float s] من مكونات [page:.x x] و [page:.y y] لهذا المتجه.

### [method:this subVectors]( [param:Vector2 a], [param:Vector2 b] )

يضبط هذا المتجه على [page:Vector2 a] - [page:Vector2 b].

### [method:Array toArray]( [param:Array array], [param:Integer offset] )

[page:Array array] - (اختياري) مصفوفة لتخزين هذا المتجه فيها. إذا لم يتم توفير هذا، سيتم إنشاء مصفوفة جديدة.
[page:Integer offset] - (اختياري) إزاحة اختيارية في المصفوفة.
يرجع مصفوفة [x، y]، أو ينسخ x و y في المصفوفة المعطاة من نوع [page:Array array].

### [method:this random]()

يضبط كل مكون من مكونات هذا المتجه على قيمة شبه عشوائية بين 0 و 1، باستثناء 1.

## المصدر (Source)

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]