Сайт Владислава Сергеевича Попова
Лучшие работы → Компьютерная графика
3D-модель Солнечной системы в OpenSCAD
Даниил, ученик 9 класса ГБОУ Цифровая школа, разработал 3D-модель Солнечной системы в САПР OpenSCAD (почти 100 строк кода!), в которой соблюдены относительные размеры планет, их спутников, расстояний между ними и даже периодов обращения вокруг Солнца. Для отдельных планет созданы спутники, например, для Юпитера – галилеевы спутники: Ио, Европа, Ганимед, Калисто.
Даниил стал призёром сразу нескольких конкурсов и конференций:
2 место на II международном конкурсе научных и научно-методических работ «IT проекты «Цифровая трансформация»» в секции «Эволюция компьютерных игр, мобильные приложения и мир профессий», Московский Политехнический Университет
2 место на XII международной научно-практической конференции докторантов, магистрантов и студентов «Молодежь и инновации в области права, экономики и образования» в секции «Модель проблемно-ориентированного, проектного обучения в современном университете», Туран-Астана и Московский Политехнический Университет
Диплом III степени на международном конкурсе научно-практических проектов «Цифровая трансформация в отраслях экономики» в секции «Цифровое обучение и информационные технологии в образовании», МГУ
3 место на VIII межрегиональной научно-практической конференции «Мир вокруг нас» в секции «Естественные и точные науки: старшая школа», Международная гимназия в Новых Вешках
Ниже приведён код, созданный в программе OpenSCAD для реализации модели Солнечной системы
color("Black", 0.93) translate([-1000000,-1000000,-1000000]) cube(2000000); obj = [695500, 2440, 6050, 6370, 3390, 71490, 60270, 25560, 24760, 1195]; dist = [-2318.333, 580, 1080, 1500, 2280, 7790, 14330, 28800, 45000, 59100]; sk = [0, 88, 224.7, 365.25, 687, 4332.5, 10753, 30660, 60225, 90520]; spzr = [1737]; spzd = [38.4]; spmr = [22.3, 12.4]; skm = [0.32, 1.26]; spmd = [0.93, 2.4]; spupr = [1561, 1820, 2410, 2630]; spupd = [67.1, 35, 183, 107]; skup = [3.55, 1.77, 16.69, 7.15]; spurr = [790, 763, 580, 590]; spurd = [44, 58, 19, 26]; skur = [8.7, 13.5, 2.5, 4.2]; spnr = [1353, 210, 170, 97]; spnd = [33, 12, 600, 10]; skn = [-5.88, 1.1, 360, 0.5]; obt = ["Солнце", "Меркурий", "Венера", "Земля", "Марс", "Юпитер", "Сатурн", "Уран", "Нептун", "Плутон"]; for (i = [0: 1 :len(obj)-1]){ if (i == 0){ sphere(obj[i]/300,$fn=64); translate([dist[i]+2318.33, obj[i] / 300 + 250, 10]) color("Green") text(obt[i], obj[i] / 300); } else{ rotate([0, 0, $t * ((1 / sk[i]) * 360 * 905200)]) translate([dist[i]+2318.33, 0, 0]) sphere(obj[i]/300,$fn=64); rotate([0, 0, $t * ((1 / sk[i]) * 360 * 905200)]) translate([dist[i]+2318.33, obj[i] / 300 + 250, 10]) color("Green") text(obt[i], obj[i] / 300); } } for (t = [0:1:len(spzr) - 1]) { r_circ = spzd[t] + 21.23; rotate([0, 0, $t * ((1 / sk[3]) * 360 * 905200)]) translate([r_circ + dist[3] + 2318.33, 0, 0]) rotate([0, 0, $t * ((1 / 27.3) * 360 * 905200)]) translate([r_circ, 0, 0]) sphere(spzr[t]/300,$fn=32); } for (t = [0:1:len(spmr) - 1]) { r_circ = spmd[t] + 11.3; rotate([0, 0, $t * ((1 / sk[4]) * 360 * 905200)]) translate([r_circ + dist[4] + 2318.33, 0, 0]) rotate([0, 0, $t * ((1 / skm[t]) * 360 * 905200)]) translate([r_circ, 0, 0]) sphere(spmr[t]/300,$fn=32); } for (t = [0:1:len(spupr) - 1]) { r_circ = spupd[t] + 238; rotate([0, 0, $t * ((1 / sk[5]) * 360 * 905200)]) translate([r_circ + dist[5] + 2318.33, 0, 0]) rotate([0, 0, $t * ((1 / skup[t]) * 360 * 905200)]) translate([r_circ, 0, 0]) sphere(spupr[t]/300,$fn=32); } rotate([0, 0, $t * ((1 / sk[6]) * 360 * 905200)]) translate([dist[6]+2318.33, 0, 0]) rotate_extrude(convexity = 10, $fn = 64) translate([243, 0, 2000]) square([53, 0.1]); rotate([0, 0, $t * ((1 / sk[6]) * 360 * 905200)]) translate([dist[6]+2318.33, 0, 0]) rotate_extrude(convexity = 10, $fn = 64) translate([408, 0, 2000]) square([63, 0.1]); rotate([0, 0, $t * ((1 / sk[6]) * 360 * 905200)]) translate([dist[6]+2318.33, 0, 0]) rotate_extrude(convexity = 10, $fn = 64) translate([306, 0, 2000]) square([85, 0.1]); for (t = [0:1:len(spurr) - 1]) { r_circ = spurd[t] + 85.2; rotate([0, 0, $t * ((1 / sk[7]) * 360 * 905200)]) translate([r_circ + dist[7] + 2318.33, 0, 0]) sphere(spurr[t]/300,$fn=32); } for (t = [0:1:len(spnr) - 1]) { r_circ = spnd[t] + 82.5; rotate([0, 0, $t * ((1 / sk[8]) * 360 * 905200)]) translate([r_circ + dist[8] + 2318.33, 0, 0]) rotate([0, 0, $t * ((1 / skn[t]) * 360 * 905200)]) translate([r_circ, 0, 0]) sphere(spnr[t] / 300,$fn=32); }
Автор: ученик 9 класса ГБОУ «Цифровая школа» Даниил Макаров
Технологии: OpenSCAD