البحث في الموقع
المحتوى عن 'max'.
-
سنتعلّم اليوم كيفية تصميم سجادة صغيرة مع إظهار تفاصيل فراء السجادة باستخدام برنامج 3D Studio MAX والاستعانة بمزايا VRay للحصول على النتيجة المطلوبة. بداية افتح برنامج 3D MAX وأنشئ ملفًا جديدًا وسنقوم بالتأكّد من أن إعدادات مقاسات العمل مضبوطة على وحدة الميليمتر عبر الذهاب للقائمة Customize > Units Setup… ومن خانة Display Unit Scale نختار الخيار Millimeters من Metric. ثم انقر على زر System Unit Setup وضع القيمة 1.0 لجهة 1Unit والوحدة يجب أن تكون Millimeters ثم انقر Ok لكلا النافذتين. وقبل البدء برسم الشكل ثلاثي الأبعاد يجب أن نكون قد حددنا الصورة أو الرسم الذي سيكون شكل السجادة لأننا سنعتمد مقاسات هذه الصورة لرسم الشكل المسطح بذات المقاسات. أنا اخترت هنا هذه الصورة المجانية لسجادة أنيقة وهي بحجم 1400 في 980 بيكسل وهي المقاسات التي سنعتمدها للسجادة ثلاثية الأبعاد. اختر إنشاء الشكل Plane من اللوحة اليمنى لإنشاء جسم مسطّح ثم اضبط المقاسات على 1400 في 980 كما هو حجم الصورة المختارة سلفًا. انقر بالزر الأيمن للفأرة على الشكل المسطح واختر القائمة Convert To > Convert to Editable Poly سنقوم بتطبيق تأثير الفراء على السجادة من إحدى أدوات VRay عبر العودة إلى لوحة Geometry في اللوحة اليمنى للبرنامج والنقر على القائمة المنسدلة لاختيار أدوات VRay. ومع التأكد من أننا نحدد شكل السجادة المسطح الذي أنشأناه للتو نختار من اللوحة اليمنى VRayFur. جرّب تصيير المشهد على وضعه الحالي لرؤية الفراء بشكل مبدئي. تستطيع تمييز لون الفراء الأبيض عن لون الأرضية للجسم المسطح والآن سنقوم بتجهيز المواد التي ستجعل السجادة تظهر بالرسم الظاهر بالصورة التي اخترناها سابقًا. انقر على المفتاح M من لوحة المفاتيح لإظهار لوحة المواد Material. وانقر على Standard ثم ابحث في القوائم التي ستظهر لاحقًا ضمن مجموعة مواد VRay على VRayMtl. انقر على المربع الصغير بجانب Diffuse ثم اختر من القائمة التي ستظهر لاحقًا الخيار Bitmap. ثم انقر على الزر Assign Material To Selection لتطبيق المادة على الجسم المحدّد (يجب أن يكون مجسم السجادة بالإضافة إلى الفراء محدّدة سلفًا). هذا ما ستبدو عليه النتيجة حتى هذه اللحظة. حدد عنصر VRayFur ثم عدّل بقيم العوامل المتغيرة Parameters كما في الصور التالية. وعند التصيير Render بعد هذه المرحلة ستبدو السجادة رائعة كما هو ظاهر. طبعًا يمكننا تعديل طول الشعر (الفرو) من خلال الخيار Length كما في الصورة المتحركة التالية. كما بإمكاننا تعديل مستوى انحناء الشعيرات عبر الخيار Bend كما في الصورة المتحركة التالية. وأمّا خيار Gravity فهو لتحدد مستوى قوة الجاذبية ما سيؤدي إلى تغيير انحناء الشعيرات وأخيرًأ الخيار Per Area من Distribution فهو لأجل تحديد تعداد وتوزيع الشعيرات ما يسمح لنا بزيادة أو تخفيف كثافة الشعيرات والفراء بحسب القيمة المدرجة. تعلمنا في هذا الدرس كيفية التعمل بشكل بسيط وسريع مع عنصر الفراء (الشعر) من VRay وهو ما يمكن القياس عليه للقيام بتصميم أنواع مختلفة من السجاد والمسطحات العشبية وشعر المخلوقات وحتى الإنسان وغيرها.
-
يوفّر الكائن Math في جافا سكريبت الكثير من الدوال والقيم منتشرة الاستخدام في الحساب والرياضيات. مثلا، إن أردنا الحصول على قيمة الثابت π (باي) الذي هو النسبة بين محيط دائرة وقطرها فيمكننا ذلك باستخدام القيمة Math.PI. من أكثر دوال الكائن Math شيوعا الدالة Math.max (والدالة المقابلة لها Math.min)؛ فمن الشائع أن تواجه مجموعةً من الأرقام وعليك معرفة أكبر أو أصغر رقم فيها، وصحيحٌ أنَّ بإمكانك استخدام معامل رياضي في JavaScript لمعرفة الإجابة، أو عبر استعمال سلسلة من عبارات if الشرطية، لكن هاتين الدالتين أكثر مرونةً وكفاءة. الدالتان Math.max وMath.min، على النقيض من الدوال التي تكتبها بنفسك في JavaScript، مبنيتان في أساس لغة JavaScript وهما جزءٌ من الكائن الساكن (static object) الخاص بالدوال الرياضية Math، وهو ما يعني أن بالإمكان استعمال دوال هذا الكائن في أيّ مكان من التطبيق أو المشروع دون تهيئة كائن خاص بها. تقبل هاتان الدالتان مجموعةً من الأرقام وسائط لها، إذ تُعيد الدالة Math.max أكبر رقم في المجموعة. جرّب مثلًا التعليمة البرمجية الآتية في console في المتصفح: Math.max(5, 10, 11, 3, 22); > 22 ملاحظة: إذا وضعت أي نوعٍ غير رقمي من القيم فستكون النتيجة هي NaN والذي يعني Not A Number (أي أن المدخلات أو المخرجات ليس رقمية). لاحظ أنَّ بإمكاننا تمرير متغيرات أو خاصيات (properties) تابعة لأحد الكائنات (object) إلى الدالة Math.max: let orbitalPeriod = new Object(); orbitalPeriod.Mercury = 87.97, orbitalPeriod.Venus = 224.70, orbitalPeriod.Mars = 686.98; Math.max(orbitalPeriod.Mercury, orbitalPeriod.Venus, orbitalPeriod.Mars) > 686.98 أحد الأمور الذي لا تستطيع الدالة Math.max فعلها هو العثور على أكبر قيمة في المصفوفة، وهو ما دعا في الماضي إلى استخدام حلقات التكرار ومقارنة كل القيم في ما بينها (عبر إحدى الخوارزميات المعروفة) وتخزين أكبر قيمة؛ إلا أن الأمر تغيّر مع ظهور المتصفحات الحديثة التي تدعم معيار EmacScript 6، والتي تمكّن من استعمال معامل باسم spread، وهو عبارة عن ثلاثة نقاط ... توضع أمام المصفوفة أثناء تمريرها للدالة، مما يختصر العملية كثيرًا: let orbitalPeriods = [87.97, 224.70, 686.98]; longestOrbit = Math.max(... orbitalPeriods); يُعرَف التأثير الذي يُحدثه المعامل Spread على المصفوفة باسم التوزيع Expension. يُكافئ تمرير مصفوفة موّزّعة تمرير جميع عناصرها على هيئة مجموعة أرقام؛ أي أن الكتابتين أدناه متكافئتان: Math.max(5, 10, 11, 3, 22); Math.max(... [5, 10, 11, 3, 22]); تُستعمل الدالة Math.max أيضًا للاختيار بين رقمين (إما/أو)، فلو كنّا نحتاج إلى قياس عرض الشاشة فسنستعمل: let screenWidth = Math.max(screen.width, 0); يجب أن تكون قيمة المتغير screenWidth النهائية رقميةً: فإما أن تساوي عرض الشاشة، أو إذا لم نستطع الحصول على تلك القيمة أو كانت غير رقمية، فالناتج 0. الحصول على أصغر رقم في المجموعة الدالة Math.min تعمل عكس عمل الدالة Math.max، فبتمرير مجموعة من القيم إليها ستُعيد الدالة Math.min أصغرها. Math.min(0.139, 0.15, 1); > 0.139 تُستعمَل الدالة Math.min عادةً لتعريف ما هي الحدود أو الشروط الدنيا، فلو كانت لدينا كرةٌ تتحرك داخل مستطيل، وكان الجانب الأيمن للمستطيل موجودًا على بعد 500 بكسل من إطار العرض، ولا نريد أن تخرج الكرة من المستطيل عند ارتطام جانبها الأيمن (ball.rigth) بحافة المستطيل (500)، فسنكتب: let collide = Math.min(ball.right,500); أحببتُ أن أنوِّه إلى إمكانية «توزيع» القيم الموجودة في مصفوفة داخل الدالة Math.min، فلو كانت لدينا مصفوفةٌ باسم bugSizes وأردنا معرفة أدنى قيمة فيها، فيمكننا كتابة: Math.min(... bigSizes) يمكننا بشكلٍ بديلٍ استخدام apply للحصول على نفس النتيجة، وهذه الطريقة مدعومةٌ دعمًا أفضل في المتصفحات: Math.min.apply(null, bigSizes); يمكن استعمال apply مع الدالة Math.max أيضًا. ترجمة – بتصرّف – للمقال To the Max: Using Math.min and .max لصاحبه Dudley Storey.