This shows you the differences between two versions of the page.
|
fr:rhino:lienversscript [2015/09/14] |
fr:rhino:lienversscript [2020/08/14] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | |||
| + | {@ | ||
| + | |||
| + | ' pntfillet : 2d fillet of 2 lines through a point | ||
| + | |||
| + | function ptw(a) | ||
| + | |||
| + | ptw=" w"& | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2prodi(a, | ||
| + | |||
| + | v2prodi=a(0)**b(0)+a(1)**b(1) | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2prode(a, | ||
| + | |||
| + | v2prode=a(0)**b(1)-a(1)**b(0) | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2ver(v) | ||
| + | |||
| + | m=sqr(v(0)^2+v(1)^2) | ||
| + | |||
| + | if m=0 then | ||
| + | |||
| + | | ||
| + | else | ||
| + | |||
| + | | ||
| + | end if | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2sub(a,b) | ||
| + | |||
| + | v2sub=array(a(0)-b(0), | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2sum(a,b) | ||
| + | |||
| + | v2sum=array(a(0)+b(0), | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2mul(v,a) | ||
| + | |||
| + | v2mul=array(v(0)**a, | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2psuml(p, | ||
| + | |||
| + | v2psuml=array(p(0)+u(0)**l, | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2verpp(a, | ||
| + | |||
| + | v=v2sub(b, | ||
| + | |||
| + | v2verpp=v2ver(v) | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2mid(pa, | ||
| + | |||
| + | v2mid=array((pa(0)+pb(0))/ | ||
| + | |||
| + | end function | ||
| + | |||
| + | function v2dist(a,b) | ||
| + | |||
| + | v2dist=sqr((a(0)-b(0))^2+(a(1)-b(1))^2) | ||
| + | |||
| + | end function | ||
| + | |||
| + | function prjptlin(pt, | ||
| + | |||
| + | l=v2prodi(v2sub(pt, | ||
| + | |||
| + | prjptlin=v2psuml(pl, | ||
| + | |||
| + | end function | ||
| + | |||
| + | function intlinlin(pa, | ||
| + | |||
| + | if abs(ua(0))> | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | else | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | end if | ||
| + | |||
| + | end function | ||
| + | |||
| + | sub main | ||
| + | |||
| + | la=rhino.getobject(" | ||
| + | |||
| + | lb=rhino.getobject(" | ||
| + | |||
| + | pt=rhino.getpoint(" | ||
| + | |||
| + | rad=rhino.getstring(" | ||
| + | |||
| + | pa0=rhino.curvestartpoint(la) | ||
| + | |||
| + | pa1=rhino.curveendpoint(la) | ||
| + | |||
| + | pb0=rhino.curvestartpoint(lb) | ||
| + | |||
| + | pb1=rhino.curveendpoint(lb) | ||
| + | |||
| + | ua=v2verpp(pa0, | ||
| + | |||
| + | ub=v2verpp(pb0, | ||
| + | |||
| + | pint=intlinlin(pa0, | ||
| + | |||
| + | ' rhino.addpoint(pint) | ||
| + | if v2dist(pint, | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | end if | ||
| + | |||
| + | if v2dist(pint, | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | end if | ||
| + | |||
| + | pa2=v2psuml(pint, | ||
| + | |||
| + | pb2=v2psuml(pint, | ||
| + | |||
| + | pm=v2mid(pa2, | ||
| + | |||
| + | ' rhino.addpoint(pm) | ||
| + | um=v2verpp(pint, | ||
| + | |||
| + | cosal=v2prodi(ua, | ||
| + | |||
| + | sinal=sqr(1-cosal*cosal) | ||
| + | |||
| + | kb=v2sub(pint, | ||
| + | |||
| + | aa=um(0)^2+um(1)^2-sinal^2 | ||
| + | |||
| + | bb=kb(0)**um(0)+kb(1)**um(1) | ||
| + | |||
| + | cc=kb(0)^2+kb(1)^2 | ||
| + | |||
| + | k0=(-bb+sqr(bb**bb-aa**cc))/ | ||
| + | |||
| + | k1=(-bb-sqr(bb**bb-aa**cc))/ | ||
| + | |||
| + | c0=v2psuml(pint, | ||
| + | |||
| + | c1=v2psuml(pint, | ||
| + | |||
| + | ' rhino.addpoint(c0) | ||
| + | ' rhino.addpoint(c1) | ||
| + | r0=v2dist(c0, | ||
| + | |||
| + | r1=v2dist(c1, | ||
| + | |||
| + | if r0>r1 then | ||
| + | |||
| + | tm=r0 | ||
| + | r0=r1 | ||
| + | r1=tm | ||
| + | tm=c0 | ||
| + | c0=c1 | ||
| + | c1=tm | ||
| + | end if | ||
| + | |||
| + | if rad=" | ||
| + | |||
| + | r=r0 | ||
| + | c=c0 | ||
| + | else | ||
| + | |||
| + | r=r1 | ||
| + | c=c1 | ||
| + | end if | ||
| + | |||
| + | pra=prjptlin(c, | ||
| + | |||
| + | prb=prjptlin(c, | ||
| + | |||
| + | ' rhino.addpoint(pra) | ||
| + | ' rhino.addpoint(prb) | ||
| + | rhino.command" | ||
| + | |||
| + | ' rhino.command" | ||
| + | end sub | ||
| + | |||
| + | pi=3.14159265358979323846 | ||
| + | |||
| + | main | ||
| + | |||
| + | }@ | ||
| + | |||
| + | |||