Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- t1 = timestamp();
- with undo "fuse" on (
- --params
- local threshold = 10.;
- local s1 = objects[1]; --TODO
- local s2 = objects[2]; --TODO
- local numspls1 = numsplines s1;
- local numspls2 = numsplines s2;
- struct fuse_t ( spl1, knt1, spl2, knt2, mid);
- local fuses = #();
- local tmp_p;
- local tmp_k;
- local tmp_h;
- --find best fusing candidates
- for i = 1 to numspls1 do (
- numknts1 = numknots s1 i;
- for j = 1 to numknts1 do (
- local p1 = getKnotPoint s1 i j;
- local bestDistance = copy threshold;
- --search nearest point in second shape
- for k = 1 to numspls2 do (
- numknts2 = numknots s2 k;
- for h = 1 to numknts2 do (
- local p2 = getKnotPoint s2 k h;
- local dist = distance p1 p2;
- if dist < bestDistance do (
- bestDistance = dist;
- tmp_k = k;
- tmp_h = h;
- tmp_p = (p1 + p2) * 0.5;
- )
- )
- )
- if bestDistance < threshold do (
- append fuses (fuse_t spl1:i knt1:j spl2:tmp_k knt2:tmp_h mid:tmp_p)
- )
- )
- )
- --fuse canditates to mid point
- for f in fuses do (
- setKnotPoint s1 f.spl1 f.knt1 f.mid;
- setKnotPoint s2 f.spl2 f.knt2 f.mid;
- )
- updateshape s1;
- updateshape s2;
- )
- t2 = timestamp();
- format "time took %s\n" ((t2 - t1) * 1e-3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement