Prechádzať zdrojové kódy

Docs: Translating Extras/Core section into Arabic (ar). (#26141)

* update list.json to include the extras/core section of arabic docs

* add arabic translation for Curve page

* add arabic translation for CurvePath page

* add arabic translation for Interpolations page

* add arabic translation for Path page

* add arabic translation for Shape page

* add arabic translation for ShapePath page
Omar Khalifa 2 rokov pred
rodič
commit
3b9090b0a9

+ 131 - 0
docs/api/ar/extras/core/Curve.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+			فئة أساسية مجردة لإنشاء كائن [name] يحتوي على طرق للإدراج. لمجموعة من [name]s انظر [page:CurvePath].
+		</p>
+		 
+		<h2>المنشئ (Constructor)</h2>
+		 
+		<h3>[name]()</h3>
+		 
+		<p>ينشئ هذا المُنشئ [name] جديدًا.</p>
+		 
+		<h2>الخصائص (Properties)</h2>
+		 
+		<h3>[property:Integer arcLengthDivisions]</h3>
+		<p>
+			يحدد هذا القيمة عدد الشعبات عند حساب طول الشطر التراكمي للمنحنى عبر [page:.getLengths]. لضمان
+			الدقة عند استخدام طرق مثل [page:.getSpacedPoints]، يوصى بزيادة [page:.arcLengthDivisions] إذا كان المنحنى كبيرًا جدًا. الافتراضي هو 200.
+		</p>
+		 
+		<h2>الوظائف (Methods)</h2>
+		 
+		<h3>[method:Vector getPoint]( [param:Float t], [param:Vector optionalTarget] )</h3>
+		<p>
+			[page:Float t] - موقع على المنحنى. يجب أن يكون في النطاق [0، 1].
+			<br />
+			[page:Vector optionalTarget] - (اختياري) إذا تم تحديده، سيتم نسخ النتيجة في هذا الفيكتور، وإلا سيتم إنشاء فيكتور جديد.
+			<br /><br />
+		 
+			يعود بفيكتور لموقع معين على المنحنى.
+		</p>
+		 
+		<h3>[method:Vector getPointAt]( [param:Float u], [param:Vector optionalTarget] )</h3>
+		<p>
+			[page:Float u] - موقع على المنحنى وفقًا لطول القوس. يجب أن يكون في النطاق [0، 1]. <br />
+			[page:Vector optionalTarget] - (اختياري) إذا تم تحديده، سيتم نسخ النتيجة في هذا الفيكتور، وإلا سيتم إنشاء فيكتور جديد.
+			<br /><br />
+		 
+			يعود بفيكتور لموقع معين على المنحنى وفقًا لطول القوس.
+		</p>
+		 
+		<h3>[method:Array getPoints]( [param:Integer divisions] )</h3>
+		<p>
+			divisions - عدد الأجزاء التي يتم تقسيم المنحنى إليها. الافتراضي هو `5`.<br /><br />
+		 
+			يعود بمجموعة من divisions + 1 نقطة باستخدام getPoint( t ).
+		</p>
+		 
+		<h3>[method:Array getSpacedPoints]( [param:Integer divisions] )</h3>
+		<p>
+			divisions - عدد الأجزاء التي يتم تقسيم المнحنى إليها. الافتراضي هو `5`.<br /><br />
+		 
+			يعود بمجموعة من divisions + 1 نقطة متساوية المسافات باستخدام getPointAt( u ).
+		</p>
+
+		<h3>[method:Float getLength]()</h3>
+		<p>احصل على إجمالي طول قوس المنحنى.</p>
+		
+		<h3>[method:Array getLengths]( [param:Integer divisions] )</h3>
+		<p>احصل على قائمة بطول الشرائح التراكمية.</p>
+		
+		<h3>[method:undefined updateArcLengths]()</h3>
+		<p>
+			تحديث ذاكرة التخزين المؤقت للمسافة الشريطية التراكمية. يجب استدعاء الطريقة
+			في كل مرة يتم فيها تغيير معلمات المنحنى. إذا كان المنحنى المحدث جزءًا من
+			منحنى مكون مثل [page:CurvePath]، يجب
+			استدعاء [page:.updateArcLengths]() على المنحنى المكوَّن أيضًا.
+		</p>
+		
+		<h3>[method:Float getUtoTmapping]( [param:Float u], [param:Float distance] )</h3>
+		<p>
+			بالنظر إلى u في النطاق (0 .. 1) ، يعود [page:Float t] أيضًا في النطاق
+			(0 .. 1). يمكن استخدام u و t لإعطائك نقاط هي
+			متساوية البعد من نهايات المنحنى ، باستخدام [page:.getPoint].
+		</p>
+		
+		<h3>[method:Vector getTangent]( [param:Float t], [param:Vector optionalTarget] )</h3>
+		<p>
+			[page:Float t] - موضع على المنحنى. يجب أن يكون في النطاق [0، 1].
+			<br />
+			[page:Vector optionalTarget] - (اختياري) إذا تم تحديده ، سيتم
+			نسخ النتيجة في هذا Vector ، وإلا سيتم إنشاء Vector جديد.
+			<br /><br />
+		
+			يعود بمتجه وحدة مماس على t. إذا لم يكن المنحنى المشتق
+			تطبيق تفريعه المماس ، سيتم استخدام نقطتين صغيرتين delta بعيدًا للعثور على التدرج الذي يبدو أنه يعطي تقريبًا معقولًا.
+		</p>
+		
+		<h3>[method:Vector getTangentAt]( [param:Float u], [param:Vector optionalTarget] )</h3>
+		<p>
+			[page:Float u] - موقع على المنحنى وفقًا لطول القوس. يجب أن يكون في النطاق [0، 1].
+
+			[page:Vector optionalTarget] - (اختياري) إذا تم تحديده، سيتم نسخ النتيجة في هذا الفيكتور، وإلا سيتم إنشاء فيكتور جديد.
+			
+			يعود الميل في نقطة تبعد مسافة متساوية عن طرفي المنحنى من النقطة المعطاة في [page:.getTangent].
+		</p>
+		
+		<h3>[method:Object computeFrenetFrames]( [param:Integer segments], [param:Boolean closed] )</h3>
+		<p>
+			إنشاء Frenet Frames. يتطلب تعريف منحى في فضاء 3D. مستخدم
+			في هَیْأَات مثل [page:TubeGeometry] أو [page:ExtrudeGeometry].
+		</p>
+		
+		<h3>[method:Curve clone]()</h3>
+		<p>إنشاء نسخة من هذه الحالة.</p>
+		
+		<h3>[method:this copy]( [param:Curve source] )</h3>
+		<p>يلصق كائن [name] آخر إلى هذه الحالة.</p>
+		
+		<h3>[method:Object toJSON]()</h3>
+		<p>يرجع كائن JSON لتمثيل هذه الحالة.</p>
+		
+		<h3>[method:this fromJSON]( [param:Object json] )</h3>
+		<p>يلصق البيانات من كائن JSON المعطى إلى هذه الحالة.</p>
+		
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 72 - 0
docs/api/ar/extras/core/CurvePath.html

@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Curve] →
+	 
+		<h1>[name]</h1>
+	 
+		<p class="desc">
+			فئة أساسية مجردة تمتد [page:Curve]. مسار المنحنى هو مجرد
+			مصفوفة من المنحنيات المتصلة، ولكنها تحتفظ بواجهة برمجة التطبيقات الخاصة بالمنحنى.
+		</p>
+	 
+		<h2>المنشئ (Constructor)</h2>
+	 
+		<h3>[name]()</h3>
+		<p>لا يأخذ المُنشئ أي معلمات.</p>
+	 
+		<h2>الخصائص (Properties)</h2>
+		<p>انظر فئة [page:Curve] الأساسية للخصائص المشتركة.</p>
+	 
+		<h3>[property:Array curves]</h3>
+		<p>مصفوفة من [page:Curve Curves].</p>
+	 
+		<h3>[property:Boolean autoClose]</h3>
+		<p>ما إذا كان يجب إغلاق المسار تلقائيًا أم لا.</p>
+	 
+		<h2>الوظائف (Methods)</h2>
+		<p>انظر فئة [page:Curve] الأساسية للأساليب المشتركة.</p>
+	 
+		<h3>[method:undefined add]( [param:Curve curve] )</h3>
+		<p>إضافة منحى إلى مصفوفة [page:.curves].</p>
+	 
+		<h3>[method:undefined closePath]()</h3>
+		<p>يضيف [page:LineCurve lineCurve] لإغلاق المسار.</p>
+	 
+		<h3>[method:Array getCurveLengths]()</h3>
+		<p>
+			الحصول على قائمة بطول القطع التراكمية للمنحنيات في مصفوفة [page:.curves].
+		</p>
+	 
+		<h3>[method:Array getPoints]( [param:Integer divisions] )</h3>
+		<p>
+			divisions -- عدد قطع التقسيم إلى المنحنى. الافتراضي هو
+			`12`.<br /><br />
+	 
+			يعود بمصفوفة من النقاط التي تمثل تسلسل منحنيات. يُعرِّف معلم `division`
+			عدد القطع التي يتم تقسيم كل منحى إليها. ومع ذلك، لأغراض التحسين والجودة،
+			يعتمد دقة العينات الفعلية لكل منحى على نوعه. على سبيل المثال، بالنسبة
+			لـ[page:LineCurve]، يكون عدد النقاط المُستَرَجَعَ دائمًا 2 فقط.
+		</p>
+	 
+		<h3>[method:Array getSpacedPoints]( [param:Integer divisions] )</h3>
+		<p>
+			divisions -- عدد قطع التقسيم إلى المنحنى. الافتراضي هو
+			`40`.<br /><br />
+	 
+			يعود بمجموعة من divisions + 1 نقط متساوية المسافات باستخدام getPointAt( u ).
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 52 - 0
docs/api/ar/extras/core/Interpolations.html

@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+	 
+		<p class="desc">
+			يحتوي [name] على دوال الشريط وبيزيه المستخدمة داخليًا من قبل
+			فئات المنحنى الخرسانية.
+		</p>
+	 
+		<h2>الوظائف (Methods)</h2>
+	 
+		<h3>[method:Float CatmullRom]( [param:Float t], [param:Float p0], [param:Float p1], [param:Float p2], [param:Float p3] )</h3>
+		<p>
+			t -- وزن التداخل.<br />
+			p0، p1، p2، p3 -- النقاط التي تُعرِّف منحى الشريط.<br /><br />
+	 
+			يُستخدم داخليًا بواسطة [page:SplineCurve SplineCurve].
+		</p>
+	 
+		<h3>[method:Float QuadraticBezier]( [param:Float t], [param:Float p0], [param:Float p1], [param:Float p2] )</h3>
+		<p>
+			t -- وزن التداخل.<br />
+			p0، p1، p2 -- نقاط البدء والتحكم والنهاية التي تُعرِّف المنحى.<br /><br />
+	 
+			يُستخدم داخليًا بواسطة [page:QuadraticBezierCurve3 QuadraticBezierCurve3] و
+			[page:QuadraticBezierCurve QuadraticBezierCurve].
+		</p>
+	 
+		<h3>[method:Float CubicBezier]( [param:Float t], [param:Float p0], [param:Float p1], [param:Float p2], [param:Float p3] )</h3>
+		<p>
+			t -- وزن التداخل.<br />
+			p0، p1، p2، p3 -- نقاط البدء والتحكم (مرتين) والنهاية التي تُعرِّف
+			المنحى.<br /><br />
+	 
+			يُستخدم داخليًا بواسطة [page:CubicBezierCurve3 CubicBezierCurve3] و
+			[page:CubicBezierCurve CubicBezierCurve].
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 160 - 0
docs/api/ar/extras/core/Path.html

@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Curve] → [page:CurvePath] →
+	 
+		<h1>[name]</h1>
+	 
+		<p class="desc">
+			تمثيل مسار ثنائي الأبعاد. توفر الفئة طرقًا لإنشاء مسارات
+			ومحيطات الأشكال ثنائية الأبعاد المشابهة لواجهة برمجة التطبيقات Canvas 2D.
+		</p>
+	 
+		<h2>مثال الكود</h2>
+	 
+		<code>
+		const path = new THREE.Path();
+	 
+		path.lineTo( 0, 0.8 );
+		path.quadraticCurveTo( 0, 1, 0.2, 1 );
+		path.lineTo( 1, 1 );
+	 
+		const points = path.getPoints();
+	 
+		const geometry = new THREE.BufferGeometry().setFromPoints( points );
+		const material = new THREE.LineBasicMaterial( { color: 0xffffff } );
+	 
+		const line = new THREE.Line( geometry, material );
+		scene.add( line );
+		</code>
+		
+		<h2>المنشئ (Constructor)</h2>
+	 
+		<h3>[name]( [param:Array points] )</h3>
+		<p>
+			points -- (اختياري) مصفوفة من [page:Vector2 Vector2s].<br /><br />
+	 
+			يُنشئ مسارًا من النقاط. يُعرِّف النقطة الأولى الإزاحة، ثُم
+			يتم إضافة النقاط المتتالية إلى مصفوفة [page:CurvePath.curves curves] كـ
+			[page:LineCurve LineCurves].<br /><br />
+	 
+			إذا لم يتم تحديد أي نقاط، يتم إنشاء مسار فارغ ويتم تعيين
+			[page:.currentPoint] على المنشأ.
+		</p>
+
+		<h2>الخصائص (Properties)</h2>
+		<p>انظر فئة [page:CurvePath] الأساسية للخصائص المشتركة.</p>
+	 
+		<h3>[property:Vector2 currentPoint]</h3>
+		<p>
+		الإزاحة الحالية للمسار. سيبدأ أي [page:Curve] جديد يتم إضافته
+		هنا.
+		</p>
+	 
+		<h2>الوظائف (Methods)</h2>
+		<p>انظر فئة [page:CurvePath] الأساسية للأساليب المشتركة.</p>
+	 
+		<h3>[method:this absarc]( [param:Float x], [param:Float y], [param:Float radius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise] )</h3>
+		<p>
+			x، y -- مركز القوس المطلق.<br />
+			radius -- نصف قطر القوس.<br />
+			startAngle -- زاوية البدء بالراديان.<br />
+			endAngle -- زاوية النهاية بالراديان.<br />
+			clockwise -- تدوير القوس في اتجاه عقارب الساعة. يعتمد على `false`.<br /><br />
+	 
+			يضيف [page:EllipseCurve EllipseCurve] مُوضَعًا مطلقًا إلى
+			المسار.
+		</p>
+	 
+		<h3>[method:this absellipse]( [param:Float x], [param:Float y], [param:Float xRadius], [param:Float yRadius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise], [param:Float rotation] )</h3>
+		<p>
+			x، y -- مركز القطع الناقص المطلق.<br />
+			xRadius -- نصف قطر القطع الناقص في المحور x.<br />
+			yRadius -- نصف قطر القطع الناقص في المحور y.<br />
+			startAngle -- زاوية البدء بالراديان.<br />
+			endAngle -- زاوية النهاية بالراديان.<br />
+			clockwise -- تدوير القطع الناقص في اتجاه عقارب الساعة. يعتمد على false.<br />
+			rotation -- زاوية دوران القطع الناقص بالراديان، عكس اتجاه عقارب
+			من المحور X الموجب. اختياري، يعتمد على 0.<br /><br />
+	 
+			يضيف [page:EllipseCurve EllipseCurve] مُوضَعًا مطلقًا إلى
+			المسار.
+		</p>
+	 
+		<h3>[method:this arc]( [param:Float x], [param:Float y], [param:Float radius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise] )</h3>
+		<p>
+			x، y -- مركز القوس المُزَوَّد من آخر استدعاء.<br />
+			radius -- نصف قطر القوس.<br />
+			startAngle -- زاوية البدء بالراديان.<br />
+			endAngle -- زاوية النهاية بالراديان.<br />
+			clockwise -- تدوير القوس في اتجاه عقارب الساعة. يعتمد على `false`.<br /><br />
+	 
+			يضيف [page:EllipseCurve EllipseCurve] إلى المسار، مُوضَعًا نسبيًا
+			إلى [page:.currentPoint].
+		</p>
+
+		<h3>[method:this bezierCurveTo]( [param:Float cp1X], [param:Float cp1Y], [param:Float cp2X], [param:Float cp2Y], [param:Float x], [param:Float y] )</h3>
+ 		<p>
+ 			يُنشئ منحى بيزيه من [page:.currentPoint] مع (cp1X، cp1Y)
+ 			و(cp2X، cp2Y) كنقاط تحكم ويُحدِّث [page:.currentPoint] إلى x
+ 			و y.
+ 		</p>
+
+ 		<h3>[method:this ellipse]( [param:Float x], [param:Float y], [param:Float xRadius], [param:Float yRadius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise], [param:Float rotation] )</h3>
+ 		<p>
+ 			x، y -- مركز القطع الناقص المُزَوَّد من آخر استدعاء.<br />
+ 			xRadius -- نصف قطر القطع الناقص في المحور x.<br />
+ 			yRadius -- نصف قطر القطع الناقص في المحور y.<br />
+ 			startAngle -- زاوية البدء بالراديان.<br />
+ 			endAngle -- زاوية النهاية بالراديان.<br />
+ 			clockwise -- تدوير القطع الناقص في اتجاه عقارب الساعة. يعتمد على `false`.<br />
+ 			rotation -- زاوية دوران القطع الناقص بالراديان، عكس اتجاه عقارب
+ 			من المحور X الموجب. اختياري، يعتمد على `0`.<br /><br />
+
+ 			يضيف [page:EllipseCurve EllipseCurve] إلى المسار، مُوضَعًا نسبيًا
+ 			إلى [page:.currentPoint].
+ 		</p>
+
+ 		<h3>[method:this lineTo]( [param:Float x], [param:Float y] )</h3>
+ 		<p>
+ 			يُربِط [page:LineCurve] من [page:.currentPoint] إلى x، y على
+ 			المسار.
+ 		</p>
+
+ 		<h3>[method:this moveTo]( [param:Float x], [param:Float y] )</h3>
+ 		<p>تحريك [page:.currentPoint] إلى x، y.</p>
+
+ 		<h3>[method:this quadraticCurveTo]( [param:Float cpX], [param:Float cpY], [param:Float x], [param:Float y] )</h3>
+ 		<p>
+ 			يُنشئ منحى رباعي من [page:.currentPoint] مع cpX و cpY كـ
+ 			نقطة تحكم ويُحدِّث [page:.currentPoint] إلى x و y.
+ 		</p>
+
+ 		<h3>[method:this setFromPoints]( [param:Array vector2s] )</h3>
+ 		<p>
+ 			points -- مصفوفة من [page:Vector2 Vector2s].<br /><br />
+
+ 			يتم إضافة النقاط إلى مصفوفة [page:CurvePath.curves curves] كـ
+ 			[page:LineCurve LineCurves].
+ 		</p>
+
+ 		<h3>[method:this splineThru] ( [param:Array points] )</h3>
+ 		<p>
+ 			points - مصفوفة من [page:Vector2 Vector2s]<br /><br />
+
+ 			يُربِط منحى جديدًا من نوع SplineCurve على المسار.
+ 		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 104 - 0
docs/api/ar/extras/core/Shape.html

@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Curve] → [page:CurvePath] → [page:Path] →
+	 
+		<h1>[name]</h1>
+	 
+		<p class="desc">
+			يعرف شكل طائرة 2d تعسفي باستخدام مسارات مع ثقوبات اختيارية. يمكن استخدامه مع [page:ExtrudeGeometry]، [page:ShapeGeometry]، للحصول على نقاط، أو للحصول على وجوه مثلثة.
+		</p>
+	 
+		<h2>مثال الكود</h2>
+	 
+		<code>
+		const heartShape = new THREE.Shape();
+
+		heartShape.moveTo( 25, 25 );
+		heartShape.bezierCurveTo( 25, 25, 20, 0, 0, 0 );
+		heartShape.bezierCurveTo( - 30, 0, - 30, 35, - 30, 35 );
+		heartShape.bezierCurveTo( - 30, 55, - 10, 77, 25, 95 );
+		heartShape.bezierCurveTo( 60, 77, 80, 55, 80, 35 );
+		heartShape.bezierCurveTo( 80, 35, 80, 0, 50, 0 );
+		heartShape.bezierCurveTo( 35, 0, 25, 25, 25, 25 );
+
+		const extrudeSettings = { 
+			depth: 8, 
+			bevelEnabled: true, 
+			bevelSegments: 2, 
+			steps: 2, 
+			bevelSize: 1, 
+			bevelThickness: 1 
+		};
+
+		const geometry = new THREE.ExtrudeGeometry( heartShape, extrudeSettings );
+
+		const mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial() );
+		</code>
+
+		<h2>أمثلة (Examples)</h2>
+
+ 		<p>
+ 			[example:webgl_geometry_shapes geometry / shapes ]<br />
+ 			[example:webgl_geometry_extrude_shapes geometry / extrude / shapes ]
+ 		</p>
+
+ 		<h2>المنشئ (Constructor)</h2>
+
+ 		<h3>[name]( [param:Array points] )</h3>
+ 		<p>
+ 			points -- (اختياري) مصفوفة من [page:Vector2 Vector2s].<br /><br />
+
+ 			ينشئ شكل من النقاط. يحدد النقطة الأولى الإزاحة، ثم يتم إضافة النقاط المتعاقبة إلى مصفوفة [page:CurvePath.curves curves] كـ
+ 			[page:LineCurve LineCurves].<br /><br />
+
+ 			إذا لم يتم تحديد أي نقاط، يتم إنشاء شكل فارغ ويتم تعيين
+ 			[page:.currentPoint] على المنشأ.
+ 		</p>
+
+ 		<h2>الخصائص (Properties)</h2>
+ 		<p>انظر فئة [page:Path] الأساسية للخصائص المشتركة.</p>
+
+ 		<h3>[property:String uuid]</h3>
+ 		<p>
+ 			[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] من
+ 			هذه الحالة. يتم تعيين هذا تلقائيًا، لذلك لا يجب تحريره.
+ 		</p>
+
+ 		<h3>[property:Array holes]</h3>
+ 		<p>مصفوفة من [page:Path paths] التي تحدد الثقوب في الشكل.</p>
+
+ 		<h2>الطرق (Methods)</h2>
+ 		<p>انظر فئة [page:Path] الأساسية للطرق المشتركة.</p>
+
+ 		<h3>[method:Array extractPoints]( [param:Integer divisions] )</h3>
+ 		<p>
+ 			divisions -- دقة النتيجة.<br /><br />
+
+ 			استدعاء [page:Curve.getPoints getPoints] على الشكل ومصفوفة [page:.holes]
+ 			، وإرجاع كائن من الشكل:
+ 			<code> { shape holes } </code>
+ 			حيث shape و holes هما مصفوفات من [page:Vector2 Vector2s].
+ 		</p>
+
+ 		<h3>[method:Array getPointsHoles]( [param:Integer divisions] )</h3>
+ 		<p>
+ 			divisions -- دقة النتيجة.<br /><br />
+
+ 			احصل على مصفوفة من [page:Vector2 Vector2s] التي تمثل الثقوب في
+ 			الشكل.
+ 		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 93 - 0
docs/api/ar/extras/core/ShapePath.html

@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+	 
+		<p class="desc">
+			يتم استخدام هذه الفئة لتحويل سلسلة من الأشكال إلى مصفوفة من
+			[page:Path]s، على سبيل المثال شكل SVG إلى مسار (انظر المثال أدناه).
+		</p>
+	 
+		<h2>المنشئ (Constructor)</h2>
+	 
+		<h3>[name]( )</h3>
+		<p>
+			ينشئ ShapePath جديد. على عكس [page:Path]، لا تتم مرور أي نقاط كما
+			يتم تصميم ShapePath ليتم إنشاؤه بعد الإنشاء.
+		</p>
+	 
+		<h2>الخصائص (Properties)</h2>
+	 
+		<h3>[property:Array subPaths]</h3>
+		<p>مصفوفة من [page:Path]s.</p>
+	 
+		<h3>[property:Array currentPath]</h3>
+		<p>[page:Path] الحالي الذي يتم إنشاؤه.</p>
+	 
+		<h3>[property:Color color]</h3>
+		<p>[page:Color] من الشكل، بشكل افتراضي مضبوط على الأبيض (0xffffff).</p>
+	 
+		<h2>الطرق (Methods)</h2>
+	 
+		<h3>[method:this moveTo]( [param:Float x], [param:Float y] )</h3>
+		<p>
+			يبدأ [page:Path] جديد ويستدعي [page:Path.moveTo]( x, y ) على ذلك
+			[page:Path]. كما يشير [page:ShapePath.currentPath currentPath] إلى ذلك
+			[page:Path].
+		</p>
+	 
+		<h3>[method:this lineTo]( [param:Float x], [param:Float y] )</h3>
+		<p>
+			هذا ينشئ خطًا من إزاحة [page:ShapePath.currentPath currentPath]
+			إلى X و Y ويحدث الإزاحة إلى X و Y.
+		</p>
+	 
+		<h3>
+			[method:this quadraticCurveTo]( [param:Float cpX], [param:Float cpY], [param:Float x], [param:Float y] )
+		</h3>
+		<p>
+			هذا ينشئ منحنى ثنائي الحدود من إزاحة [page:ShapePath.currentPath currentPath]
+			إلى x و y مع cpX و cpY كنقطة تحكم و
+			يحدث إزاحة [page:ShapePath.currentPath currentPath]
+			إلى x و y.
+		</p>
+	 
+
+		<h3>
+			[method:this bezierCurveTo]( [param:Float cp1X], [param:Float cp1Y], [param:Float cp2X], [param:Float cp2Y], [param:Float x], [param:Float y] )
+		</h3>
+		<p>
+			هذا ينشئ منحنى بيزيه من إزاحة [page:ShapePath.currentPath currentPath]
+			إلى x و y مع cp1X و cp1Y و cp2X و cp2Y كنقاط تحكم
+			ويحدث إزاحة [page:ShapePath.currentPath currentPath]
+			إلى x و y.
+		</p>
+		 
+		<h3>[method:this splineThru] ( [param:Array points] )</h3>
+		<p>points - مصفوفة من [page:Vector2]s</p>
+		<p>
+			يربط [page:SplineCurve] جديد على [page:ShapePath.currentPath currentPath].
+		</p>
+		 
+		<h3>[method:Array toShapes]( [param:Boolean isCCW] )</h3>
+		<p>isCCW -- يغير كيفية إنشاء الأشكال الصلبة والثقوب</p>
+		<p>
+			يحول مصفوفة [page:ShapePath.subPaths subPaths] إلى مصفوفة من
+			الأشكال. بشكل افتراضي، يتم تعريف الأشكال الصلبة باتجاه عقارب الساعة (CW) ويتم تعريف الثقوب بعكس اتجاه عقارب الساعة (CCW). إذا تم تعيين isCCW على true، فإن هذه
+			مقلوب.
+			<br />
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/extras/core/ShapePath.js src/extras/core/ShapePath.js]
+		</p>
+	</body>
+</html>

+ 9 - 0
docs/list.json

@@ -537,6 +537,15 @@
 				"ImageUtils": "api/ar/extras/ImageUtils",
 				"PMREMGenerator": "api/ar/extras/PMREMGenerator",
 				"ShapeUtils": "api/ar/extras/ShapeUtils"
+			},
+
+			"Extras / Core": {
+				"Curve": "api/ar/extras/core/Curve",
+				"CurvePath": "api/ar/extras/core/CurvePath",
+				"Interpolations": "api/ar/extras/core/Interpolations",
+				"Path": "api/ar/extras/core/Path",
+				"Shape": "api/ar/extras/core/Shape",
+				"ShapePath": "api/ar/extras/core/ShapePath"
 			}
 
 		}