Сайт Владислава Сергеевича Попова

Лучшие работыКомпьютерная графика

Плакат Солненая система в OpenSCAD Инженеры будущего

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