R
runsun
Sat, Nov 19, 2016 10:13 PM
Well, I have rechecked this. It seems that the vertices of meeting parts
should be
the same. Try this code with show edges:
// tetrahedron with a missin face
p = [ [0,0,0], [10,0,0], [0,10,0], [0,0,10] ];
f = [ [0,1,2], [0,3,1], [0,2,3] ];
// additional faces to close it
n=3;
degface = false;
ps = [for(i=[0:n+1]) p[1]i/(n+1) + p[2](n+1-i)/(n+1) ];
fs = [for(i=[1:n+1]) [ 3, 3+i, 4+i ] ];
df = n>0 && degface ? [for(i=[n+2:-1:1]) 3+i ] : [];
// the full tetrahedron
difference(){
polyhedron(concat(p,ps),concat(f,fs,[df]));
cube(3,center=true);
translate([10,0,0]) cube(3,center=true);
}
Have you noticed that there are always 2 cases of duplications?
p= [ A,B,C,D];
n=0: ps= [ C,B ]; p+ps => [A,B,C,D, C,B];
n=1: ps= [ C,P, B ]; p+ps => [A,B,C,D, C,P,B];
n=2: ps= [ C,P, Q, B ]; p+ps => [A,B,C,D, C,P,Q,B];
n=3: ps= [ C,P, Q, R, B ]; p+ps => [A,B,C,D, C,P,Q,R,B];
B and C are always duplicated regardless of n.
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19252.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
Ronaldo wrote
> Well, I have rechecked this. It seems that the vertices of meeting parts
> should be
*
> exactly
*
> the same. Try this code with show edges:
>> // tetrahedron with a missin face
>> p = [ [0,0,0], [10,0,0], [0,10,0], [0,0,10] ];
>> f = [ [0,1,2], [0,3,1], [0,2,3] ];
>> // additional faces to close it
>> n=3;
>> degface = false;
>> ps = [for(i=[0:n+1]) p[1]*i/(n+1) + p[2]*(n+1-i)/(n+1) ];
>> fs = [for(i=[1:n+1]) [ 3, 3+i, 4+i ] ];
>> df = n>0 && degface ? [for(i=[n+2:-1:1]) 3+i ] : [];
>> // the full tetrahedron
>> difference(){
>> polyhedron(concat(p,ps),concat(f,fs,[df]));
>> cube(3,center=true);
>> translate([10,0,0]) cube(3,center=true);
>> }
Have you noticed that there are always 2 cases of duplications?
p= [ A,B,C,D];
n=0: ps= [ C,B ]; p+ps => [A,B,C,D, C,B];
n=1: ps= [ C,P, B ]; p+ps => [A,B,C,D, C,P,B];
n=2: ps= [ C,P, Q, B ]; p+ps => [A,B,C,D, C,P,Q,B];
n=3: ps= [ C,P, Q, R, B ]; p+ps => [A,B,C,D, C,P,Q,R,B];
B and C are always duplicated regardless of n.
-----
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19252.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
RP
Ronaldo Persiano
Sat, Nov 19, 2016 10:21 PM
Yes, I aware of it. It causes no harm as discussed before. I explore that
in my codes.
2016-11-19 20:13 GMT-02:00 runsun runsun@gmail.com:
Well, I have rechecked this. It seems that the vertices of meeting parts
should be
the same. Try this code with show edges:
// tetrahedron with a missin face
p = [ [0,0,0], [10,0,0], [0,10,0], [0,0,10] ];
f = [ [0,1,2], [0,3,1], [0,2,3] ];
// additional faces to close it
n=3;
degface = false;
ps = [for(i=[0:n+1]) p[1]i/(n+1) + p[2](n+1-i)/(n+1) ];
fs = [for(i=[1:n+1]) [ 3, 3+i, 4+i ] ];
df = n>0 && degface ? [for(i=[n+2:-1:1]) 3+i ] : [];
// the full tetrahedron
difference(){
polyhedron(concat(p,ps),concat(f,fs,[df]));
cube(3,center=true);
translate([10,0,0]) cube(3,center=true);
}
Have you noticed that there are always 2 cases of duplications?
p= [ A,B,C,D];
n=0: ps= [ C,B ]; p+ps => [A,B,C,D, C,B];
n=1: ps= [ C,P, B ]; p+ps => [A,B,C,D, C,P,B];
n=2: ps= [ C,P, Q, B ]; p+ps => [A,B,C,D, C,P,Q,B];
n=3: ps= [ C,P, Q, R, B ]; p+ps => [A,B,C,D, C,P,Q,R,B];
B and C are always duplicated regardless of n.
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ),
runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix (
2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid ,
animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont ,
tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg ,
tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
View this message in context: http://forum.openscad.org/Can-
you-sweep-a-object-with-fingers-tp19057p19252.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Yes, I aware of it. It causes no harm as discussed before. I explore that
in my codes.
2016-11-19 20:13 GMT-02:00 runsun <runsun@gmail.com>:
> Ronaldo wrote
> > Well, I have rechecked this. It seems that the vertices of meeting parts
> > should be
> *
> > exactly
> *
> > the same. Try this code with show edges:
> >> // tetrahedron with a missin face
> >> p = [ [0,0,0], [10,0,0], [0,10,0], [0,0,10] ];
> >> f = [ [0,1,2], [0,3,1], [0,2,3] ];
> >> // additional faces to close it
> >> n=3;
> >> degface = false;
> >> ps = [for(i=[0:n+1]) p[1]*i/(n+1) + p[2]*(n+1-i)/(n+1) ];
> >> fs = [for(i=[1:n+1]) [ 3, 3+i, 4+i ] ];
> >> df = n>0 && degface ? [for(i=[n+2:-1:1]) 3+i ] : [];
> >> // the full tetrahedron
> >> difference(){
> >> polyhedron(concat(p,ps),concat(f,fs,[df]));
> >> cube(3,center=true);
> >> translate([10,0,0]) cube(3,center=true);
> >> }
>
> Have you noticed that there are always 2 cases of duplications?
>
> p= [ A,B,C,D];
>
> n=0: ps= [ C,B ]; p+ps => [A,B,C,D, C,B];
> n=1: ps= [ C,P, B ]; p+ps => [A,B,C,D, C,P,B];
> n=2: ps= [ C,P, Q, B ]; p+ps => [A,B,C,D, C,P,Q,B];
> n=3: ps= [ C,P, Q, R, B ]; p+ps => [A,B,C,D, C,P,Q,R,B];
>
> B and C are always duplicated regardless of n.
>
>
>
>
>
> -----
>
> $ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ),
> runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix (
> 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid ,
> animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont ,
> tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg ,
> tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
> --
> View this message in context: http://forum.openscad.org/Can-
> you-sweep-a-object-with-fingers-tp19057p19252.html
> Sent from the OpenSCAD mailing list archive at Nabble.com.
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
R
runsun
Sun, Nov 20, 2016 12:40 AM
Thx, Ronaldo. The understanding of no need to be exact same number of points
on both faces could save a lot of troubles.
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19256.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
Thx, Ronaldo. The understanding of no need to be exact same number of points
on both faces could save a lot of troubles.
-----
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19256.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
RP
Ronaldo Persiano
Sun, Nov 20, 2016 3:04 AM
I am not sure I have understood your understanding.
2016-11-19 22:40 GMT-02:00 runsun runsun@gmail.com:
Thx, Ronaldo. The understanding of no need to be exact same number of
points
on both faces could save a lot of troubles.
I am not sure I have understood your understanding.
2016-11-19 22:40 GMT-02:00 runsun <runsun@gmail.com>:
> Thx, Ronaldo. The understanding of no need to be exact same number of
> points
> on both faces could save a lot of troubles.
>
>
>
R
runsun
Sun, Nov 20, 2016 3:43 AM
@Ronaldo: I think I didn't think through it clearly. You are right to point
that out.
What interests me is the re-sampling process to match two surfaces. I'd be
interested how you achieved that as in the following fig:
http://forum.openscad.org/file/n19259/161119_Ronaldo_re-sampling.png
Or how Parkinrob achieves his:
http://forum.openscad.org/file/n15173/showcase6.png
A while ago I was solving a similar/related situation (of joining two
polys), and I figured that a resampling approach is needed. This attempt was
reflected in a forum post
http://forum.openscad.org/Polyhedron-tube-with-irregular-sides-is-it-possible-td13813.html
in which I was looking for a solution to punch an irregular hole in a poly
plan, 'cos I believe that is the basic for lofting, which is essential for
poly joining.
Later I came up with a preliminary solution of re-sampling:
http://forum.openscad.org/file/n13824/20150914_irregular_tube_paring.png
It is still far from "irregular hole", but already can do lots of cool
stuff.
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19259.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
@Ronaldo: I think I didn't think through it clearly. You are right to point
that out.
What interests me is the re-sampling process to match two surfaces. I'd be
interested how you achieved that as in the following fig:
<http://forum.openscad.org/file/n19259/161119_Ronaldo_re-sampling.png>
Or how Parkinrob achieves his:
<http://forum.openscad.org/file/n15173/showcase6.png>
A while ago I was solving a similar/related situation (of joining two
polys), and I figured that a resampling approach is needed. This attempt was
reflected in a forum post
<http://forum.openscad.org/Polyhedron-tube-with-irregular-sides-is-it-possible-td13813.html>
in which I was looking for a solution to punch an irregular hole in a poly
plan, 'cos I believe that is the basic for lofting, which is essential for
poly joining.
Later I came up with a preliminary solution of re-sampling:
<http://forum.openscad.org/file/n13824/20150914_irregular_tube_paring.png>
It is still far from "irregular hole", but already can do lots of cool
stuff.
-----
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19259.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
R
Ronaldo
Sun, Nov 20, 2016 1:49 PM
@Ronaldo: I think I didn't think through it clearly. You are right to
point that out.
What interests me is the re-sampling process to match two surfaces. I'd be
interested how you achieved that as in the following fig:
runsun, the re-sampling I use is a simple process. First, compute (for each
polygon) the list of the distances along the polygon border from each vertex
to the starting vertex: they are ascending-ordered lists. Normalize the two
lists, dividing each one by its maximum. Then, both start with zero and end
with 1. Refer to the figure where the blue dots represent one list and the
green dots the other:
http://forum.openscad.org/file/n19267/resampling2.png
Now merge the lists (like in merge sort) with one difference: if the same
value is found in both lists, put just one in the output list (the red dot
in the output list). Use the output list to re-sample both polygon by doing
appropriate interpolations. I am sure you would be able to write this
algorithm but I may provide my codes if you need.
Another approach is taken by skin() in list comprehension demos. Suppose the
one polygon has n vertices more then the other. The skin() algorithm inserts
n new vertices (Linde calls them Steiner points) in the "smaller" one. The
method inserts one at a time in the longest edge splitting it in half, with
an additional care: if the longest edge is not an original polygon edge, it
removes the k previously inserted vertices from it and inserts k+1
subdividing the edge equally. In fact, it is more efficient than that but
with the same result.
I don't use this method because it is more complex and it is not continuous
with the vertex positions: a small change in a vertex may cause a big change
in the re-sampling. Anyway, I have a clearer and commented implementation of
the method if you need it.
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19267.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
runsun wrote
> @Ronaldo: I think I didn't think through it clearly. You are right to
> point that out.
>
> What interests me is the re-sampling process to match two surfaces. I'd be
> interested how you achieved that as in the following fig:
runsun, the re-sampling I use is a simple process. First, compute (for each
polygon) the list of the distances along the polygon border from each vertex
to the starting vertex: they are ascending-ordered lists. Normalize the two
lists, dividing each one by its maximum. Then, both start with zero and end
with 1. Refer to the figure where the blue dots represent one list and the
green dots the other:
<http://forum.openscad.org/file/n19267/resampling2.png>
Now merge the lists (like in merge sort) with one difference: if the same
value is found in both lists, put just one in the output list (the red dot
in the output list). Use the output list to re-sample both polygon by doing
appropriate interpolations. I am sure you would be able to write this
algorithm but I may provide my codes if you need.
Another approach is taken by skin() in list comprehension demos. Suppose the
one polygon has n vertices more then the other. The skin() algorithm inserts
n new vertices (Linde calls them Steiner points) in the "smaller" one. The
method inserts one at a time in the longest edge splitting it in half, with
an additional care: if the longest edge is not an original polygon edge, it
removes the k previously inserted vertices from it and inserts k+1
subdividing the edge equally. In fact, it is more efficient than that but
with the same result.
I don't use this method because it is more complex and it is not continuous
with the vertex positions: a small change in a vertex may cause a big change
in the re-sampling. Anyway, I have a clearer and commented implementation of
the method if you need it.
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19267.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
R
runsun
Sun, Nov 20, 2016 4:55 PM
@Ronaldo, ah ha ! The moment I spotted your figure, I see how you did it
right away. It turns out that my method is the same as what you described in
the skin() approach, and, as you mentioned, it's much more difficult to
code. I actually moved a step further to insert points bidirectionally ---
that is, insert points that are missing on both polys. That made it even
more troublesome. I'll see if I can apply your approach. Thx.
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text , triang ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19269.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
@Ronaldo, ah ha ! The moment I spotted your figure, I see how you did it
right away. It turns out that my method is the same as what you described in
the skin() approach, and, as you mentioned, it's much more difficult to
code. I actually moved a step further to insert points bidirectionally ---
that is, insert points that are missing on both polys. That made it even
more troublesome. I'll see if I can apply your approach. Thx.
-----
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text , triang ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19269.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
RP
Ronaldo Persiano
Sun, Nov 20, 2016 9:20 PM
@Ronaldo, ah ha ! The moment I spotted your figure, I see how you did it
right away. It turns out that my method is the same as what you described
in
the skin() approach, and, as you mentioned, it's much more difficult to
code. I actually moved a step further to insert points bidirectionally ---
that is, insert points that are missing on both polys. That made it even
more troublesome. I'll see if I can apply your approach. Thx.
I do insert points in both polygon. Curiously, you image
irregular_tube_paring suggested me something similar to what I do and not
what skin() does.
2016-11-20 14:55 GMT-02:00 runsun <runsun@gmail.com>:
> @Ronaldo, ah ha ! The moment I spotted your figure, I see how you did it
> right away. It turns out that my method is the same as what you described
> in
> the skin() approach, and, as you mentioned, it's much more difficult to
> code. I actually moved a step further to insert points bidirectionally ---
> that is, insert points that are missing on both polys. That made it even
> more troublesome. I'll see if I can apply your approach. Thx.
>
I do insert points in both polygon. Curiously, you image
irregular_tube_paring suggested me something similar to what I do and not
what skin() does.
R
runsun
Mon, Nov 21, 2016 1:40 AM
I think the basic idea is probably the same, but in my case, I use "angle to
the starting point" as a comparison criteria for point-insertion, you use
"ratio of length to the starting point". In my first impression, ratio
should be easier than angle. For one thing, calculating "angle" will require
a common center for both surfaces, which brings a whole new problem to solve
(how to identify this common center when the surface is irregular). The use
of "ratio" will require no such center, which is what I think the main
difference.
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text , triang ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19279.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
I think the basic idea is probably the same, but in my case, I use "angle to
the starting point" as a comparison criteria for point-insertion, you use
"ratio of length to the starting point". In my first impression, ratio
should be easier than angle. For one thing, calculating "angle" will require
a common center for both surfaces, which brings a whole new problem to solve
(how to identify this common center when the surface is irregular). The use
of "ratio" will require no such center, which is what I think the main
difference.
-----
$ Runsun Pan, PhD $ libs: doctest , faces ( git ), offline doc ( git ), runscad.py ( 2 , git ), synwrite ( 2 ); $ tips: hash ( 2 ), matrix ( 2 , 3 ), sweep ( 2 , 3 ), var ( 2 ), lerp , animation ( gif , prodVid , animlib ), precision ( 2 ), xl-control , type , rounded polygon , chfont , tailRecur ( 2, 3 ), isosphere ( 2 ), area , vol/center , RGB , CurvedImg , tests ( 2 ), text , triang ; $ Apps: rollApp , blockscad , openjscad , on AWS ( pdf )
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19279.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
R
Ronaldo
Mon, Nov 21, 2016 4:02 PM
I found a first simple scheme to make a furcation:
http://forum.openscad.org/file/n19289/Junction.png
The incomming data are the three mouth closed arcs and its traversal
derivatives. The surface is composed of three rectangular and three
triangular Bezier patches. The joint at the green lines is continuous but
not C1. To have a C1 joint the mouth arcs should be cubic splines at least
C1 and the triangular patch has to be divided in three triangular Bezier
patches in a Clough-Tocher subdivision.
This scheme is not easily extended for more mouths. The top and bottom
triangles would turn into more sided polygons and a different subdivision
must be devised. But any way, this experiment shows that at least a hand
with 2 fingers is feasible by terminating sweeps/skins at the three mouths.
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19289.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
I found a first simple scheme to make a furcation:
<http://forum.openscad.org/file/n19289/Junction.png>
The incomming data are the three mouth closed arcs and its traversal
derivatives. The surface is composed of three rectangular and three
triangular Bezier patches. The joint at the green lines is continuous but
not C1. To have a C1 joint the mouth arcs should be cubic splines at least
C1 and the triangular patch has to be divided in three triangular Bezier
patches in a Clough-Tocher subdivision.
This scheme is not easily extended for more mouths. The top and bottom
triangles would turn into more sided polygons and a different subdivision
must be devised. But any way, this experiment shows that at least a hand
with 2 fingers is feasible by terminating sweeps/skins at the three mouths.
--
View this message in context: http://forum.openscad.org/Can-you-sweep-a-object-with-fingers-tp19057p19289.html
Sent from the OpenSCAD mailing list archive at Nabble.com.