Před odevzdáním úlohy přes GitHub je třeba projevit souhlas se zpracováním osobních údajů.
Za tři body na cvičení naprogramujte program v jazyce C, C++, Python nebo Ruby, který pro zadaný STL soubor (první argument volání programu) najde nejvhodnější rotaci kolem osy Z tak, aby plocha obdélníkové podstavy pomyslného opsaného hranolu objektu byla co nejmenší – hrany pomyslného opsaného hranolu jsou rovnoběžné s osami X, Y nebo Z.
Do repozitáře vytvořeného na odkazu https://classroom.github.com/a/ojdq0WRI
dejte soubor bestrot s příponou c, cpp, py nebo rb podle zvoleného
jazyka (např. bestrot.c). Je povoleno použít pouze standardní knihovnu jazyka
a ADMesh (u Ruby RADMesh).
Ilustrační obrázek z Netfabbu ukazující opsaný hranol s obdélníkovou podstavou:
(Model CC BY-NC 3.0 © Daniel Moos.)
Program vypíše na standardní výstup úhel otočení (ve stupních), obsah podstavy opsaného hranolu (ten nejlepší nalezený), a do souboru zadaného druhým argumentem (z příkazové řádky) uloží orotovaný soubor v libovlném STL formátu (ASCII/binary).
Příklad výstupu:
65
897489645.867869
Pro ukázku můžete použít následující STL, ale program musí umět pracovat s jakýmkoliv STL.
Vhodný úhel nalezněte bruteforce metodou pro úhly otočení v násobcích 5° (5°, 10°, 15°, ...).
Vhodné funkce a údaje:
stl_rotate_z(&stl_in, angle_in_degrees)– rotuje kolem osy Z, o daný počet stupňů<stl_file>.stats.number_of_facetsje počet trojúhelníků v STL<stl_file>.facet_startje ukazatel na první trojúhelník (a jde k němu přistupovat jako k poli)- trojúhelníky jsou uloženy v strukturách
stl_facetobsahující v trojprvkovém polivertextři vrcholy (strukturastl_vertexobsahující tři floatyx,yaz) - zajímavé údaje jsou uloženy i ve
stl_file.stats
