3D Workspace
Home
Assets
Affiliate Program
Sign up/Log in
?
Upgrade
DCC Bridge
Anonymous1758705804
09-27 14:25
Model Name
فازة ثلاثية الأبعاد
Tags
props
rendering
realistic
Input
Prompt
//============================================================== // متغيرات التحكم الرئيسية (Main Control Variables) //============================================================== // دقة التفاصيل - أهم متغير للدقة العالية! // لزيادة الدقة، قم بزيادة $fn و تقليل layer_height $fn = 150; // عدد الأوجه الدائرية (كلما زاد الرقم زادت الدقة) layer_height = 0.5; // ارتفاع كل شريحة (كلما قل الرقم زادت الدقة) total_height = 100; // الارتفاع الكلي للزهرية base_radius = 40; // نصف قطر القاعدة الأقصى wall_thickness = 2; // سمك الجدار (لجعلها مجوفة) // متغيرات التحكم في شكل الموجات والتموج (Wave and Ripple Control) num_waves = 20; // عدد التموجات/الموجات حول الزهرية wave_amplitude = 5; // مدى عمق التموج (كلما زاد زادت الحدة) wave_frequency = 4; // عدد الموجات الرأسية على طول الارتفاع (للشكل البيضاوي) twist_angle = 60; // زاوية الالتواء الكلية من الأسفل إلى الأعلى (لإضافة الحركة) //============================================================== // الدوال المساعدة لتوليد الشكل (Helper Functions for Shape Generation) //============================================================== // دالة لتوليد نصف قطر الزهرية الأساسي حسب الارتفاع z (شكل بيضاوي/إجاصي) function get_base_radius(z) = base_radius * sin(90 * (z / total_height)) + base_radius * 0.1; // دالة لحساب الإزاحة الشعاعية للتموجات عند الارتفاع z والزاوية a function get_radial_offset(z, a) = wave_amplitude * sin(a * num_waves) * pow(sin(180 * z/total_height), wave_frequency); // دالة لحساب زاوية الالتواء عند الارتفاع z function get_twist(z) = (z / total_height) * twist_angle; // دالة لحساب نصف القطر النهائي function final_radius(z, a) = get_base_radius(z) + get_radial_offset(z, a); //============================================================== // وحدة بناء الزهرية باستخدام polyhedron (Vase Building Module) //============================================================== module organic_vase(h, r, t) { // حساب عدد الشرائح/الطبقات num_layers = floor(h / layer_height); // حلقة لتوليد النقاط (Points) points = [ for (i = [0 : num_layers]) let (z = i * layer_height) for (j = [0 : $fn - 1]) let (a = j * (360 / $fn)) let (current_angle = a + get_twist(z)) let (R = final_radius(z, current_angle)) [ R * cos(current_angle), R * sin(current_angle), z ] ]; // حساب عدد النقاط في كل طبقة (يساوي $fn) N = $fn; // حلقة لتوليد الأوجه (Faces) faces = [ for (i = [0 : num_layers - 1]) for (j = [0 : N - 1]) let ( // نقاط الطبقة السفلية p1 = i * N + j, p2 = i * N + (j + 1) % N, // نقاط الطبقة العلوية p3 = (i + 1) * N + (j + 1) % N, p4 = (i + 1) * N + j ) // وجهان مثلثان يشكلان رُباعي الأوجه (Quad) // الترتيب مهم لتحديد الأوجه الخارجية (Convex Hull) [p1, p2, p3], [p1, p3, p4] ]; // توليد الشكل ثلاثي الأبعاد polyhedron(points = points, faces = faces); // إغلاق القاعدة (اختياري) translate([0, 0, 0]) linear_extrude(height = layer_height) circle(r = final_radius(0, 0)); } //============================================================== // تنفيذ الكود النهائي (Final Execution) //============================================================== // الإطار الخارجي organic_vase(total_height, base_radius, twist_angle); // تجويف الزهرية (باستخدام difference) // difference() { // // الإطار الخارجي (تم وضعه سابقاً) // organic_vase(total_height, base_radius, twist_angle); // // الطرح الداخلي - زهرية داخلية أصغر لتشكيل الجدار // translate([0, 0, layer_height]) // رفع التجويف قليلاً عن القاعدة // scale([ // (base_radius - wall_thickness) / base_radius, // (base_radius - wall_thickness) / base_radius, // (total_height - 2*layer_height) / total_height // تضييق الفتحة العلوية قليلاً // ]) // organic_vase(total_height, base_radius, twist_angle); // } // لجعل الكود يعمل بشكل أسرع في المعاينة، يمكنك استبدال السطرين أعلاه بما يلي: // *ملاحظة: هذا الخيار لا يقوم بالتجويف* // organic_vase(total_height, base_radius, twist_angle);
Detailed Info
Related Models
Enter invite code
Enter invite code to get credits!