# [name]

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

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

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

التكرار عبر مثيل [name] سيعطي مكوناته `(x، y، z، w)` بالترتيب المقابل.

## مثال للكود

`const a = new THREE.Vector4( 0, 1, 0, 0 ); //لا معاملات؛ سيتم تهيئته إلى (0 ، 0 ، 0 ، 1) const b = new THREE.Vector4( ); const d = a.dot( b );`

## المنشئ (Constructor)

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

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

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

### [property:Boolean isVector4]

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

### [property:Float x]

### [property:Float y]

### [property:Float z]

### [property:Float w]

### [property:Float width]

الاسم المستعار لـ [page:.z z].

### [property:Float height]

الاسم المستعار لـ [page:.w w].

## الطرق (Methods)

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

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

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

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

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

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

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

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

### [method:this applyMatrix4]( [param:Matrix4 m] )

يضرب هذا المتجه في 4 × 4 [page:Matrix4 m].

### [method:this ceil]()

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

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

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

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

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

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

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

### [method:Vector4 clone]()

يرجع Vector4 جديدًا بنفس قيم [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w] كهذا.

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

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

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

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

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

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

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

يرجع `true` إذا كانت مكونات هذا المتجه و [page:Vector4 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 + 0]` ، قيمة [page:.y y] لتكون `array [offset + 1]` قيمة [page:.z z] لتكون `array [offset + 2]` وقيمة [page:.w w] لتكون `array [offset + 3]`.

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

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

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

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

### [method:Float length]()

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

### [method:Float manhattanLength]()

يحسب طول مانهاتن لهذا المتجه.

### [method:Float lengthSq]()

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

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

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

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

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

### [method:this negate]()

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

### [method:this normalize]()

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

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

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

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

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

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

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

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

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

### [method:this round]()

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

### [method:this roundToZero]()

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

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

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

### [method:this setAxisAngleFromQuaternion]( [param:Quaternion q] )

[page:Quaternion q] - a normalized [page:Quaternion]
يضبط مكونات [page:.x x] و [page:.y y] و [page:.z z] من هذا المتجه على محور الرباعية و[page:.w w] على الزاوية.

### [method:this setAxisAngleFromRotationMatrix]( [param:Matrix4 m] )

[page:Matrix4 m] - a [page:Matrix4] of which the upper left 3x3 matrix is a pure rotation matrix.
يضبط [page:.x x] و [page:.y y] و [page:.z z] على محور الدوران و[page:.w w] على الزاوية.

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

[page:Integer index]- 0، 1، 2 أو 3.
[page:Float value]- [page:Float]
إذا كان index يساوي 0 ، فقم بتعيين [page:.x x] إلى [page:Float value].
إذا كان index يساوي 1 ، فقم بتعيين [page:.y y] إلى [page:Float value].
إذا كان index يساوي 2 ، فقم بتعيين [page:.z z] إلى [page:Float value].
إذا كان index يساوي 3 ، فقم بتعيين [page:.w w] إلى [page:Float value].

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

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

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

يضبط قيم [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w] من هذا المتجه متساوية مع [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 setZ]( [param:Float z] )

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

### [method:this setW]( [param:Float w] )

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

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

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

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

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

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

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

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

[page:Array array]- (اختياري) مصفوفة لتخزين هذا المتجه فيها. إذا لم يتم توفير هذا ، سيتم إنشاء مصفوفة جديدة.
[page:Integer offset]- (اختياري) إزاحة اختيارية في المصفوفة.
يرجع مصفوفة [x، y، z، w] ، أو ينسخ x و y و z و w في المصفوفة المقدمة [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]