RE: OpenScad a spirála

Petr Simek psimek na jcu.cz
Úterý Listopad 23 07:10:33 CET 2021


Myslel jsem to takhle :

// translate Z, D, d, stoupani, uhlova velikost, uhv segmentu, uhlova pozice zacatku
module spiralaT(tr, D, d, st, uhv, uhvs, upz) { // spirala
    stu = st/360;
    vel = uhvs/360 * PI*D *1.25;
    for (u = [0: uhvs: uhv-uhvs-uhvs]) translate([0, 0, tr]) {
       hull(){
        rotate([0, 0, u+upz]) translate([D/2, 0, stu*u])
          rotate([-atan(st/d/PI), 0, 0]) cylinder(d=d, h=vel-vel+0.1, center=true, $fn=d*6);
        rotate([0, 0, u+upz+uhvs]) translate([D/2, 0, stu*(u+uhvs)])
          rotate([-atan(st/d/PI), 0, 0]) cylinder(d=d, h=vel-vel+0.1, center=true, $fn=d*6);
         }
    }
}

spiralaT(0, 50, 5, 50, 720, 5, 0);



*------------------------------------------------------------------------*
|                          Petr Simek   APS JU                           |
|                             psimek na jcu.cz                              |
*------------------------------------------------------------------------*


On Mon, 22 Nov 2021, Pavel Hudecek wrote:

> Zajímavý je, že s tím hull se mi to nějak vždycky rozaplikovalo všude a vznikl z toho placatý prstenec, přičemž po zakomentování hull byla spirála z kružnic. Tak jsem se vykašlal na dokonalost a udělal to z válců. Kdyby někdo chtěl, tak tady je výsledná funkce:
>
> // translate Z, D, d, stoupani, uhlova velikost, uhv segmentu, uhlova pozice zacatku
> module spiralaT(tr, D, d, st, uhv, uhvs, upz) { // spirala
>    stu = st/360;
>    vel = uhvs/360 * PI*D *1.25;
>    for (u = [0: uhvs: uhv-uhvs]) translate([0, 0, tr]) {
>        rotate([0, 0, u+upz]) translate([D/2, 0, stu*u])
>            rotate([-atan(st/d/PI), 0, 0]) cylinder(d=d, h=vel, center=true, $fn=d*6);
>    }
> }
>
> Příklad:
> spiralaT(0, 50, 5, 50, 720, 2, 0);
>
> PH
>
> Od: Petr Simek
>
> On Sun, 21 Nov 2021, Pavel Hudecek wrote:
>
>> Chtěl bych klasickou válcovou spirálu, jako je pružina.
>
>> Když zkusím for cyklem vyrobit hromadu kuliček, tak to funguje. Ale to
>> je pomalé už při náhledu, pokus o render v ne moc velké kvalitě trval
>> hodinu. Líp by to vyšlo s méně kuličkami a spojit přes hull, jenže ten
>> pak ještě spojí začátek a konec:-)
>>
>> Nějaká třetí cesta?
>
> For cyklus od nuly do n-1 a vzdy nakreslite v hull segment n a n+1 .
> Nejlip kruznici, kulicka je vypocetne slozitejsi. A podle hrubosti
> cyklu a $fn kruznice bude vysledek umerne hladky.
>
>


Další informace o konferenci Hw-list