Use your fingers or mouse to control model
(hold shift key or use mouse wheel to zoom it).
Ramiform node. Two (semi-ellipse ×
Bezier curve) tensor product patches are used to make a branch.
Branches are C1 continuous at junctions.
Procedural bark textures are used.
XY Ramiform node
Two (semi-ellipse × Bezier curve)
tensor product patches are used to make a twig.
E.g. dark and light- gray patches below. Generating semi-circle
ae and semi-ellipsis bO, cO are dashed lines and
Bezier curve is the red one on the dark-gray patch.
If points b, c, d lie on one line, then
twigs are C1 continuous with
the ramiform node.
Ramiform is determined by 3 vectors Oe, Og, Oh
(they lie in the xOy plane),
3 base circle radiuses r1, r2, r3 (ea, hf, ... )
and minor ellipse radius r0 (rather arbitrary yet).
Tne O point is at the center (0,0,0).
Oc direction is determined as
nOe + nOh ,
where e.g. nOe is the unit vector in the
Oe direction. Ob direction depends on scalar product
(nOe·nOh ).
function ramiform(r0,r1,r2,r3, x1,y1, x2,y2, x3,y3, tex_off){
patch(r0,r1,r2, x1,y1, x2,y2, 1, tex_off);
patch(r0,r2,r3, x2,y2, x3,y3, 0, tex_off);
patch(r0,r3,r1, x3,y3, x1,y1, -1, tex_off);
}
function patch(r0,r1,r2, b1x,b1y, b2x,b2y, dir_u, tex_off){
...
}
The function ramiform() makes two smoothly connected patches
(e.g. dark-gray and blue above). We call it 3 times to build the whole ramiform.
To combine two B, B' ramiforms C1 continuously
df and a'b' points shall lie on one line.
Black forest demo.
Modeling the Mighty Maple for Web
updated 6 Apr 2015