Giter VIP home page Giter VIP logo

b232hw-assignment's Introduction

Rally Switch

Vaším úkolem je namodelovat „Rally Switch“ pro ovládání roadbooku na motocyklové závody.

Na obrázku vidíte, jak taková věc vypadá ve skutečnosti.

Ilustrace

Budete modelovat zjednodušenou variantu.

Náhled celku

Odevzdání a termíny

Založte repozitář: https://classroom.github.com/a/SvqD-UKu

Deadline odevzdání je 19.5.2024 23:59 CEST (= konec výuky LS). Vypracovaný úkol nahrajte do repozitáře vytvořeného na odkaze výše. Nikam jinam jej neposílejte, jako odevzdání se počítá to, co bude ve vašem repozitáři (ve výchozí větvi (většinou main)) v momentu deadlinu.

Pokud máte jakékoliv dotazy, či naleznete chyby, napište je prosím do Issues v tomto repozitáři.

Po pushnutí commitu do vašeho repozitáře proběhne sada testů. Testy vyžadují optickou kontrolu. Testy 20 a 21 (velmi velké a malé hodnoty) mají v hodnocení dvojitou váhu, ostatní testy jsou rovnocenné.

Rozhraní

Váš model implementujte jako modul v OpenSCADU s tímto rozhraním:

module rally_switch(
    buttons=[3,3],
    bar_diameter=28,
    bottom_base_height=3,
    button_bottom_access=12,
    button_diameter=10,
    button_edge_spacing=[8,13],
    button_lock_rim_height=2,
    button_spacing=[5,5],
    cut=1,
    joystick_diameter=15,
    joystick_wall_thickness=3,
    mounting_screw_diameter=4,
    mounting_screw_head_depth=5,
    mounting_screw_head_diameter=6,
    switch_cable_hole_depth=3,
    switch_cable_hole_diameter=16,
    switch_cable_hole_width=6,
    switch_height=15,
    switch_screw_depth=4,
    switch_screw_diameter=3,
    switch_screw_distance_from_edge=3,
    switch_screw_distance_from_top=10,
    switch_screw_spacing=20,
    top_base_height=5,
    show_bottom=true,
    show_top=true,
    )
{
    // ...
}

Smíte (je to dokonce žádoucí) vytvářet další pomocné moduly. Smíte vytvářet další pomocné soubory (ale není to potřeba).

Váš modul musí jít použít následujícím způsobem z jiného souboru ve vašem kořenovém adresáři vašeho repozitáře:

use <rally_switch.scad>

rally_switch();

Výchozí hodnoty argumentů musí zůstat zachovány dle tohoto rozhraní! Naše testy budou jednotlivé argumenty nastavovat, ale budou předpokládat stejné výchozí hodnoty!

Parametry

Vámi namodelovaný model se bude skládat ze dvou částí: bottom a top. Pomocí argumentu show_bottom (respektive show_top) lze zobrazení těchto částí vypnout (respektive zapnout). Nezobrazení jedné části nemá vliv na pozici části zobrazené.

Parametr buttons určuje počet děr na tlačítka (část top) ve směru os X a Y. Další dvousložkové parametry se chovají stejně (první složka udává rozměr po ose X, druhá po ose Y).

Všechny další parametry udávají rozměry jednotlivých součástí dle přiložených schémat.

Umístění v souřadném systému

Pro automatické testy je naprosto zásadní, aby váš model byl umístěn na správném místě. Modely umístěné špatně budou vyhodnoceny jako nesprávné. Věnujte proto umístění modelu zvýšenou pozornost.

Model leží v nezáporných částech os X a Y počínaje v nulách.

Model leží středem předělu mezi částmi bottom a top na rovině XY (tedy na Z=0).

XYZ

Horní díl (část top)

Náhled top

Schéma top

Schémata lze zvětšit. V repozitáři jsou i vektorové varianty.

Spodní díl (část bottom)

Část bottom

Celek

Schéma celku

Na obrázku si všiměte úchytu na joystik a jeho zarovnání na předposlední (počítáno od Z=0) díru na tlačítko. Situaci, kdy je holes.x méně než 2, nemusíte řešit.

Nefunkční požadavky

  • Manipulace s $f* hodnotami je zakázána
  • Je zakázáno použít konstrukci minkowski() (ve 3D i ve 2D prosotoru)
  • Nelze použít operátor ^
  • Není doporučováno používat rekurzi, ani to k vyřešení úkolu není zapotřebí
  • Využití externích knihoven (včetně knihovny MCAD) je zakázáno
  • Pokud je něco zakázáno, vede použití k tomu, že neprojdou testy a dostáváte 0 bodů
  • Váš kód musí splňovat určitou kvalitu (tato část tvoří 5 bodů z celkových 30 možných)
    • Opakování v kódu je špatně, vždy použijte moduly a cykly
    • Bulharské konstanty musí být doplněny o vysvětlující komentář
    • Dodržte logickou úroveň odsazení

b232hw-assignment's People

Contributors

hroncok avatar

Watchers

 avatar

b232hw-assignment's Issues

button_spacing nekonzistence

image

Mezera mezi tlačítky je dána od vnějšího průměru (button_bottom_access). Ale střed mounting screw je dán jako polovina délky mezery od vnitřního průměru tlačítka (button_diameter). To by šroub posunulo o trochu blíže k jednomu tlačítku. Z nákresu mi připadá, že by šroub měl být na půl mezi tlačítky (resp. jeho x souřadnice).

Šířka joysticku v testech neodpovídá zadání

Ahoj,
není mi jasné jak je to se šířkou joysticku. V zadání je:

"Na obrázku si všiměte úchytu na joystik a jeho zarovnání na předposlední (počítáno od Z=0) díru na tlačítko. Situaci, kdy je holes.x méně než 2, nemusíte řešit."

ale v testech se to bere jinak, zdá se mi, že šířka je tam fixní: (např. test 12)

image

Předpokládám, že tato vlastnost není v testech implementována, ale jinak se počítá s tím co je v zadání?

Neprocházející test 21

Test 21 mi jako jediný neprochází na 100 %. Při porovnání obrázku je moje řešení oproti referenčnímu odlišné o 5 pixelů.
Co s tím mám prosím dělat? Prochází mi na cca 99.993 %.

image
@hroncok @syky27

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.