This article describes a rounding operation for a 3D CAD boundary representation (B-Rep) solid model. Complex combinations of convex and concave edges are handled predictably and reliably. At vertices the surfaces are smoothly connected by one or more surface patches. An algorithm for the creation of blending surfaces and their integration into the model is outlined. The sequence of topological modifications applied to the solid model is illustrated by examples including some special case handling. ,.0 ".+) 0$! /% ++(!* +,!.0%+*/ )+ !.* /+(% )+ !(%*# /5/0!) *!! / 0+ ,.+2% ! !/560+61/! "%(%0%!/ "+. (+( )+ %"%0%+*/ +" 0$! ,.%).5 )+ !( *! +" 0$! )+/0 %),+.0*0 !4),(!/ %/ 0$! +. .+1* %*# +" ! #!/ %* 3$%$ /$., ! #! +" 0$! )+ !( %/ .!,(! 5 /1."! 0$0 /)++0$(5 &+%*/ 0$! 03+ &!*0 "!/ /!! %# (!* %*# /1."!/ /!.2! /!2!.( ,1.,+/!/ %* )!$*%( !/%#*/ %*(1 %*# %//%,0%*# /0.!// +*!*0.0%+*/ * !*6 $*%*# "(1% "(+3 ,.+,!.0%!/ * %0%+* /+)! )$%*%*# ,.+!//!/ + *+0 ,!.)%0 0$! )*1"01.! +" /$., ! #!/ )++0$ 0.*/%0%+*/ !03!!* /1."!/ .! (/+ +"0!* .!-1%.! "+. !/0$!0% .!/+*/ !/% !/ "1*0%+*( .!-1%.!)!*0/ ! #! (!* %*# %/ +*!,01((5 -1%0! /%),(! +,!.0%+* 3$%$ )'!/ %0 2!.5 ,+,1(. )+*# !/%#*!./ 1/%*# /5/0!)/ +))+* $.0!.%/0% +" ()+/0 (( ,,(%0%+*/ %/ 0$0 0$! /)++0$*!// +" 0$! (!* %/ )+.! %),+.0*0 0$* %0/ !40 /$,! +. 0$! 1/!. 0$%/ )!*/ 0$0 %0 /$+1( ! ,+//%(! 0+ .!0! (!* 5 /,!%"5%*# +*(5 "!3 ,.)!0!./ 0 %/ 0$!* 0$! /5/0!)/ 0/' 0+ "%(( 0$! .!)%*%*# !#.!!/ +" ".!! +) %* )!*%*#"1( )**!. .+) * (#+.%0$)% ,+%*0 +" 2%!3 (!* %*# +*! +. )+.! ! #!/ +" /+(% )+ !( /%)1(0*!+1/(5 "((/ %*0+ 03+ /16 0/'/ $! "%./0 %/ 0+ .!0! /1."! 0$0 ,.+2% !/ 0$! 0.*/%6 0%+* !03!!* 0$! &!*0 /1."!/ !"%*%*# 0$! ! #! !+* (5 0$! /1."!/ *!! 0+ ! 0.%))! ,.+,!.(5 * %*0!#.0! %*0+ 0$! + 5 /1$ 0$0 2(% /+(% )+ !( %/ )%*0%*! $%(! 0$! "%./0 /0!, %/ ,1.!(5 #!+)!0.% ,.+6 (!) 0$! /!+* +*! %*2+(2!/ +0$ #!+)!0.% * 0+,+(+#%6 ( +,!.0%+*/ $! (!* %*# )+ 1(! %* +(% !/%#*!. 3/ !/%#*! 3%0$ 0$! #+( +" ((+3%*# (!* %*# +" 3% ! 2.%!05 +" +)6 ,(!4 ! #! +)%*0%+*/ %* .+1/0 )**!. $%/ %/ +)6 ,(%/$! 0$.+1#$ 0$! 1/! +" ".!!"+.) #!+)!0.5 / (!* %*# /1."!/ (+*# 3%0$ -1%0! %*2+(2! #!+)!0.% * 0+,+(+#%6 ( +*/% !.0%+*/ %* /!2!.( ,$/!/ +" 0$! (#+.%0$) $! (' +" ".!!"+.) /1."!/ 3/ 0$! ,.%).5 .!/+* "+. )+/0 +" 0$! .!/0.%0%+*/ +*!.*%*# ! #! (!* %*# %* +(% !/%#*!./ ,.! !!//+. 0$! )+ !(%*# /5/0!) / '!.*!( 0$! +)1(1/ #!+)!0.% )+ !(!. +!/ %* "0 ,.+2% ! )+.! +),(!4 /1."!/ 10 0$!/! !*$*! (!* / 3!.! *!2!. %),(!6 )!*0! %* 0$! ,.+ 10 $! 1..!*0 ,%(%0%!/ +" +(% !/%#*!./ (!* %*# (#+.%0$) #+ ". !5+* 3%0$ .!/,!0 0+ 0$! 0+,+(+#%( /%010%+*/ 0$0 * ! $* (! .!(%(5 +.!+2!. 0$! .$%0!01.! +" 0$! (#+.%0$) ((+3/ 0$! %*(1/%+* +" "101.! !*$*!)!*0/ %* +*/%/0!*0 )**!. 0 %/ 0$! %) +" 0$%/ ,,!. 0+ %((1/0.0! 0$! /% (!* %*# (6 #+.%0$) * 0+ ,.+2% ! 0$! .! !. 3%0$ !4),(!/ 0$0 !)6 +*/0.0! 0$! +),(!4%05 +" 0$! #!+)!0.% * 0+,+(+#%( ,.+(!)/ 0$0 )1/0 ! /+(2! 0+ %*0!#.0! +*! +. )+.! (!* /1."!/ %*0+ /+(% )+ !( +.! %*"+.)0%+* +* 0$%/ /1&!0 /+(% )+ !( 3%0$ /$., ! #!/ #!/ .+1* ! 5 (!* %*# (a) (b) 0+!. !3(!006'. +1.*( %#0 #.51 $' (170& +0 "11&9#4- #0& 6*' ':%'..'06 5748'; 1( !+&# filleting 14 rounding 4'52'%6+8'.; 0 6*+5 #46+%.' 9' 9+.. 4'('4 61 $16* %#5'5 #5 $.'0&5 1.+&'5+)0'45 70&'4.;+0) 2*+.1512*; #..195 (.':+$.' /1&+(+%#6+105 1( 6*' 51.+& /1&'. +0 '8'4; 56#)' 1( 6*' /1&'.= +0) 241%'55 0 6*' %106':6 1( '&)' $.'0&+0) 6*+5 /'#05 6*#6 +6 5*17.& #.9#;5 $' 2155+$.' 61 4'/18' 14 /1&+(; #0 ':+56+0) $.'0& 574(#%' 9+6*176 4')#4& 61 *19 +6 9#5 %4'#6'& ( 5'8'4#. '&)'5 61 $' $.'0&'& /''6 #6 # %1//10 8'46': 6*' $.'0&+0) 574(#%'5 5*17.& $' ,1+0'& +0 # 5/116* /#00'4 "' %#.. 6*'5' 64#05+6+105 vertex regions $'%#75' 6*'; 4'2.#%' # 8'46': $; # 5'6 1( 574(#%'5 0 51/' 52'%+#. %#5'5 # 8'46': 4')+10 %#0 $' &'(+0'& $; # 5+0).' #0#.;6+% 574(#%' .+-' # 52*'4' 14 # 61475 0 )'0'4#. *19'8'4 6*'; #4' &'(+0'& $; 72 61 5+: 6#0)'06+#..; %100'%6'& =52.+0' (4''(14/ 574(#%'5 0 6*' 0':6 5'%6+10 6*' 5'%10& 5'%6+10 1( 6*+5 #46+%.' 9' +0641&7%' 51/' 6'4/+01.1); %1//10.; 75'& +0 51.+& /1&'.= +0) +0 2#46+%7.#4 +0 6*' $.'0&+0) %106':6 *' 6*+4& 5'%6+10 &'5%4+$'5 6*' 75' /1&'. 1( '&)' $.'0&+0) +0 1.+&'= 5+)0'4 0 18'48+'9 1( 6*' #.)14+6*/ +5 )+8'0 +0 6*' (1746* 5'%6+10 (1..19'& $; # /14' &'6#+.'& &+5%755+10 1( +65 /#,14 56'25 +0#..; +0 6*' .#56 5'%6+10 9' &+5%755 51/' 2'4(14= /#0%' #0& 56#$+.+6; +557'5 Blending Module of the HP PE/SolidDesigner Kernel 744'06.; 6*' $.'0&+0) 12'4#6+10 +0 6*' 1.+&'5+)0'4 -'40'. +/2.'/'065 9*#6 +5 %1//10.; -0190 #5 6*' rolling ball blend *+5 6;2' 1( $.'0& %#0 '#5+.; $' 8+57#.+<'& #5 # $#.. /18+0) #.10) 6*' '&)' #0& 617%*+0) 6*' #&,#%'06 574= (#%'5 6*' primary 574(#%'5 5+/7.6#0'175.; *' 617%*+0) .1%+ #4' %748'5 6*#6 &'(+0' 6*' $170&#4+'5 1( 6*' $.'0& 574(#%' '2'0&+0) 10 9*'6*'4 6*' 4#&+75 1( 6*' $#.. +5 %1056#06 14 8#4+'5 9*+.' +6 +5 /18+0) 9' 52'#- 1( constantĆ radius 14 variableĆradius $.'0&5 *' )'1/'64; /1&7.' 1( 1.+&'5+)0'45 -'40'. 572= 21465 # 07/$'4 1( &+(('4'06 574(#%' 6;2'5 +) *'5' +0= %.7&' 6*' 0#674#. 37#&4+%5 2.#0'5 52*'4'5 %;.+0&'45 #0& %10'5 61475'5 #0& 01070+(14/ 4#6+10#. =52.+0' (4''(14/ 574(#%'5 .. 1( 6*' 574(#%' 6;2'5 #4' 4'24'5'06'& 2#4#/'64+%#..; *' 1$,'%6=14+'06'& &'5+)0 1( 6*' -'40'. #..195 6*' 75' 1( )'0'4+% #.)14+6*/5 (14 )'0'4#. 574(#%'5 #5 9'.. #5 52'%+#.=%#5' 51.76+105 (14 2#46+%7.#4 574(#%' 6;2'5 156 #.)14+6*/5 57%* #5 574(#%'574(#%' +06'45'%6+105 14 5+.= *17'66' %#.%7.#6+105 $'*#8' %105+&'4#$.; /14' 56#$.; #0& 2'4(14/ /14' '((+%+'06.; 9*'0 &'#.+0) 9+6* 010(4''(14/ 14 analytic 574(#%'5 105'37'06.; 6*' $.'0& #.)14+6*/ 64+'5 61 '/2.1; #0#.;6+% 574(#%'5 9*'0'8'4 2155+$.' *+5 0'%'55+= 6#6'5 5'8'4#. %#5' &+56+0%6+105 &74+0) 6*' 241%'55 1( $.'0& %4'#6+10 9*+%* 9+.. $' 21+06'& 176 .#6'4 '2'0&+0) 10 6*' .1%#. )'1/'64; 6*#6 +5 6*' %108':+6; 1( 6*' '&)' $.'0&+0) #0 '&)' /#; +081.8' #&&+0) 14 4'/18+0) /#6'4+#. *'5' 12'4#6+105 #4' 51/'6+/'5 &+56+0)7+5*'& #5 1.+&'5+)0'4 $'.10)5 61 6*' %.#55 1( ='2 $170&= #4; 4'24'5'06#6+10 /1&'.'45 +0 9*+%* 6*' 51.+& /1&'. +5 4'24'5'06'& +06'40#..; #5 # 5'6 1( 8'46+%'5 '&)'5 #0& (#%'5 0 #&&+6+10 6*' 4'24'5'06#6+10 %106#+05 +0(14/#6+10 #$176 *19 6*'5' '06+6+'5 #4' 4'.#6'& 61 '#%* 16*'4>6*#6 +5 6*' topology 1( 6*' /1&'. ='2 /1&'.'45 757#..; '/2.1; # 4'564+%6'& 5'6 1( 12'4#6+105 61 2'4(14/ 6121.1)+%#. /#0+27.#= 6+105 1( 6*' /1&'. *' #22.+%#6+10 1( 6*'5' Euler operators '0574'5 6*' 6121.1)+%#. +06')4+6; 1( 6*' /1&'. 06')4#6+0) 10' 14 /14' $.'0& (#%'5 +061 # 51.+& +081.8'5 37+6' # 07/$'4 1( 6121.1)+%#. /1&+(+%#6+105 #0& &+(('4'06 7.'4 12'4#6145 "' 9+.. 016 &+5%755 6*' 70&'4.;+0) %10%'265 +0 &'6#+. *'4' $76 4'('4 6*' 4'#&'4 61 6*' 56#0&#4& 5174%'5 14 174 274215'5 +6 57((+%'5 61 -019 6*#6 6*' $.'0& #.)1= 4+6*/ '/2.1;5 6*'5' $#5+% 12'4#6145 (14 ':#/2.' ADEV ADED KEV KE 61 %4'#6' 6*' 0'9 6121.1)+%#. 4'24'5'06#6+10 1( 6*' $.'0&'& $1&; *' $.'0& /1&7.' #.51 6#-'5 #&8#06#)' 1( $#5+% (70%6+10#.+6; 2418+&'& $; 6*' )'1/'64; /1&7.' 1( 1.+&'5+)0'45 -'40'. :#/2.'5 #4' %.15'56=21+06 %#.%7.#6+105 9+6* 4'52'%6 61 # %748' 14 # 574(#%' "' %#.. 6*'5' 12'4#6+105 relaxing # 21+06 10 # %748' 14 574(#%' *+5 #22.+'5 61 %748'5 14 574= (#%'5 1( #0; 6;2' 14 +056#0%' +6 +5 1(6'0 0'%'55#4; 61 4'.#: #0 #4$+64#4; 21+06 10 6*' +06'45'%6+10 %748' 1( 691 574(#%'5 +0%' 6*'5' 12'4#6+105 #4' 2#46 1( 6*' -'40'.5 )'0'4+% (70%= 6+10#.+6; 9' 9+.. 016 )1 +061 6*' &'6#+.5 1( 6*'+4 +/2.'/'06#= 6+10 Using the Blend Command +-' #.. 1( 1.+&'5+)0'45 %1//#0&5 6*' 75'4 +06'4= (#%' (14 6*' $.'0& %1//#0& +5 &'5+)0'& 61 $' '#5; 61 75' #0& 4'37+4' #5 .+66.' +0276 #5 2155+$.' (41/ 6*' 75'4 *+5 +5 )4'#6.; (#%+.+6#6'& $; 51/' )'0'4#. /'%*#0+5/5 75'& 6*417)*176 1.+&'5+)0'45 75'4 +06'4(#%' 57%* #5 6*' 5'.'%6+10 /'6*1&5 #0& 6*' .#$'.+0) (''&$#%- Fig. 2. '6#+. (41/ +) 5*19+0) &+(('4'06 6;2'5 1( 574(#%'5 '/= 2.1;'& $; 6*' $.'0&+0) #.)14+6*/ (a) (b) %61$'4 '9.'66=#%-#4& 1740#. 25 %" )"+! ,**+! !&01&+$2&0%"0 14, *,!"0 1%" definition mode +! 1%" preview mode + !"#&+&1&,+ *,!" 0&+$)" ,/ *2)1&-)" "!$"0 + " 0")" 1"! +! 00&$+"! /!&20 ,# 1%" /,))&+$ )) /&)"8/!&20 )"+!0 /" 0-" &#&"! 6 01/1 +! "+! /!&& 1, " 00&$+"! 1, 1%" "+! 3"/1& "0 ,# 1%" "!$" &+ " 1%" %,& " ,# 1%" 01/1 +! "+! 3"/1& "0 &0 /&1//6 1%" 3"/1& "0 ,# 1%" 2//"+1)6 0")" 1"! "!$" /" */("! 4&1% )")0 %" /!&20 ,# 1%" /,))&+$ )) 3/&"0 )&+"/)6 "14""+ 1%" 14, "+! 3"/1& "0 ,# 1%" "!$" + &*-,/1+1 #"12/" ,# 1%" )"+! ,**+! &0 &10 &)&16 1, %+!)" ,1% 16-"0 ,# )"+!0 0&*2)1+",20)6 %&0 $&3"0 1%" 20"/ 1%" &)&16 1, 0-" &#6 + /&1//6 ,*&+1&,+ ,# ,+8 01+1 +! 3/&)" /!&20 )"+!0 " % 4&1% -,00&)6 !&##"/"+1 /!&& &+ 0&+$)" )"+! 0"00&,+ %" )"+! ,**+! 20"0 01/&$%1#,/4/! /!&20 !"#2)1&+$ ,/ "5*-)" 1%" ,+01+1 /!&20 ,# 1%" 1&3" "!$" //&"0 ,3"/ 1, )) 020".2"+1)6 0")" 1"! "!$"0 2+)"00 1%" 20"/ %,,0"0 +"4 /!&20 "5-)& &1)6 %&)" -/, "00&+$ 1%" 0")" 1"! "!$"0 1%" )$,/&1%* !" &!"0 ,21 1%" &+ )20&,+ ,# 3"/1"5 /"$&,+ 1, -/,3&!" 0*,,1% 1/+0&1&,+ "14""+ 1%" )"+! 02/# "0 3"/1"5 /"$&,+ 4&)) " /"1"! &# )) "!$"0 !' "+1 1, -/1& 2)/ 3"/1"5 /" 1, " )"+!"! &+ 1%" 0*" 0"00&,+ + ,1%"/ 4,/!0 3"/1"5 /"$&,+ + "0&)6 " 02--/"00"! 6 )"+!&+$ !' "+1 "!$"0 ,+" #1"/ +,1%"/ + -/"3&"4 *,!" 1%" )"+! # "0 /" 0%,4+ 20&+$ -/"8 3&"4 ,),/ ,!&#& 1&,+ ,# 1%" /!&20 ,/ 1%" "!$" &+#,/*8 1&,+ &0 +,1 -,00&)" &+ 1%&0 *,!" ,4"3"/ 2-,+ /"12/+&+$ 1, 1%" !"#&+&1&,+ *,!" 1%" 20"/ + 0-" &#6 #2/1%"/ "!$"0 1, " )"+!"! *,!&#6 1%" )"+! /!&20 00&$+"! 1, + "!$" ,/ /"*,3" + "!$" #/,* 1%" )&01 %"/" /" 14, 460 1, 1"/*&+1" "3"/6 ,**+! &+ ,)&!"0&$+"/ + ")&+$ 1%" )"+! ,**+! 20"0 1%" )"+!0 1, " !&0 /!"! 4%&)" ,*-)"1&+$ &1 *("0 1%" )"+!0 7/") ,/ ,+3"+&"+ " 1%" )"+! *"+2 ,+1&+0 0*)) +2*"/ ,# ,-1&,+0 • %" -/1 %" ("/ 202))6 /2+ ,+ 1%" )"+!"! -/1 + " 04&1 %"! ,## 1, -/,3&!" #01"/ )1%,2$% -,00&)6 &+3)&! /"02)1 • %" )")0 11 %"! 1, "!$"0 +! # "0 4%& % *&$%1 " ++,6&+$ &# )/$" +2*"/ ,# "!$"0 /" 0")" 1"! + " 12/+"! ,## • chain ,-1&,+ )),40 1%" 20"/ 1, 0")" 1 )) "!$"0 ,++" 1"! 1+$"+1&))6 1, $&3"+ "!$" 6 0&+$)" -& ( " 20" ,# 1%" ,*-)"5&16 ,# 1%" ,-"/1&,+ )"+!&+$ ,+" ,/ *2)1&-)" "!$"0 0,*"1&*"0 #&)0 %&)" 0,*" -/,)"*0 /" "0&)6 !"1" 1"! ,1%"/0 /" 20"! 6 1,-,),$& ) ,/ $",*"18 /& ) /"01/& 1&,+0 /,,1"! 1 /")1&3")6 ),4 )"3") 16-& ) "5*-)" #,/ 1%" #&/01 (&+! ,# -/,)"* &0 1%" 0" 4%"/" 1%" )"+! /!&20 &0 %,0"+ 1,, )/$" + +6 0" #&)2/" &0 /"-,/1"! 1, 1%" 20"/ 6 !&0-)6&+$ + "//,/ *"00$" +! %&$%)&$%1&+$ 1%" "!$" 1%1 &0 20&+$ 1%" -/,)"* 0 +,1"! ,3" 1%" /,))&+$ )) )"+! -/,3&!"0 20 4&1% 3"/6 &+12&1&3" 46 1, !"#&+" )"+! 02/# " %&)" *,3&+$ ),+$ 1%" "!$" 1%" )) 04""-0 ,21 "/1&+ 3,)2*" %" )"+! 02/# " &0 0&*-)6 -/1 ,# 1%" 02/# " ,2+!&+$ 1%&0 1,"/ "4)"118 (/! ,2/+) 3,)2*" + *1%"*1& 0 02/# "0 1%1 /" 04"-1 ,21 6 #*&8 )&"0 ,# *,3&+$ 0-%"/"0 /" ))"! canal surfaces %" 6)&+8 !"/ +! 1%" 1,/20 /" 1%" *,01 ,3&,20 "5*-)"0 +2*"/ ,# )"+!&+$ -/,)"*0 + " %+!)"! 6 &+0"/1&+$ 02/# "0 ,# 1%"0" 16-"0 " 4&)) /"#"/ 1, 1%"0" 0"0 0 anaĆ lytic blends + ,1%"/ 1%+ 1%" 0&*-)" 0"0 %,4"3"/ 1%" "5-)& &1 /"-/"0"+11&,+ ,# +) 02/# " 1("0 ,+ .2&1" ,*-)& 1"! #,/* %"/"#,/" + --/,5&*1&,+ ,# 1%" &!") )"+!&+$ 02/# "0 6 #/""#,/* )"+!0 &0 ,+01/2 1"! + -/8 1& 2)/ 4" 20" 8 ,+1&+2,20 80-)&+" 02/# "0 %" $"+"/) )$,/&1%* &0 !&3&!"! &+1, +2*"/ ,# 0*))"/ *,!2)"0 % ,# 1%"0" *,!2)"0 16-& ))6 0 +0 ,3"/ )) "!$"0 1, " )"+!"! +! -"/#,/*0 "/1&+ 10( ,4"3"/ /" &0 1("+ 1%1 1%" /"02)1 &0 06**"1/& 1%1 &0 &1 !,"0 +,1 !"-"+! ,+ 1%" ,/!"/ &+ 4%& % 1%" "!$"0 /" ,-"/1"! ,+ %" 10( ,# 1%" #&/01 *,!2)" &0 1, #&)1"/ ,21 )) 0"0 4%"/" + +)61& 0,)21&,+ "5&010 +! #)$ 1%" ,//"0-,+!&+$ "!$"0 ,/!&+$)6 + 1%" 0" ,+! 01"- 1%" 1,2 %&+$ 2/3"0 ,# 1%" )) 4&1% 1%" -/&*/6 02/# "0 /" ) 2)1"! %&)" 1%&0 &0 01/&$%1#,/4/! #,/ +)61& )"+!0 1%" ,2+!/&"0 ,# #/""8 #,/* )"+!0 *201 " ,*-21"! +2*"/& ))6 %&0 &0 ,*8 -)&0%"! 6 marching )$,/&1%* 3&+$ ) 2)1"! 1%" ,2+!/&"0 ,# 1%" )"+! 02/# " 4" !"1"/*&+" 1%"&/ &+1"/0" 1&,+ -,&+10 4&1% ,1%"/ "!$"0 1 &0 ,#1"+ +" "00/6 1, /"*,3" "!$"0 #/,* 1%" *,!") 1, #&+! 20"#2) &+1"/0" 1&,+ -,&+10 %&0 &0 1%" #&/01 01"- 1%1 -,00&)6 &+3,)3"0 1,-,),$& ) *,!&#& 1&,+0 ,# 1%" ,/&$&+) ,!6 1%"/ *',/ %+$"0 1, 1%" *,!") /" !,+" &+ 1%" +"51 14, *,!2)"0 4%& % /"-/"0"+1 1%" )"+! # " 1,-,),$& ))6 %" #&/01 *,!2)" -"/#,/*0 1%" zipping ,# 1%" ,/&$&+) "!$" 1%1 &0 &1 /"-) "0 1%&0 "!$" 6 14, +"4 ,+"0 ,++" 1"! 1, 1%" 0*" "+! 3"/1& "0 " ,+!)6 1%" --/,-/&1" 1,-,),$6 1 1%" "+! 3"/1& "0 &0 &+0"/1"! /,* 1,-,),$& ) -,&+1 ,# 3&"4 1%" *,!") ,+1&+&+$ 1%" -/&*/6 )"+!0 &0 +,4 ,*-)"1" ,4"3"/ 0"3"/) 1,-,),$&8 ) "+1&1&"0 /" 01&)) 4&1%,21 $",*"1/6 %" 02/# "0 ,//"8 0-,+!&+$ 1, 1%" )"+! # "0 #,/ &+01+ " /" +,1 6"1 !"8 #&+"! %"0" /" ,*-21"! &+ 1%" +"51 *,!2)" 0"! ,+ 1%" )/"!6 3&))" ,2+!/6 !1 2/1%"/*,/" 1%" 02/# "0 +""! 1, " 1/&**"! 1 1%" "+! 3"/1& "0 ,# 1%" ,/&$&+) "!$"0 %" 1/&**&+$ 2/3"0 ,# 1%" 02/# " /" &+ $"+"/) ,*-21"! 6 &+1"/0" 1&+$ 1%"* 4&1% !' "+1 02/# "0 ,4"3"/ &1 *&$%1 )0, " +" "00/6 1, &+1"/0" 1 14, !' "+1 )"+! 02/# "0 /"1"! &+ 1%" 0*" 0"00&,+ %" &+1"/0" 1&,+ 2/3"0 /" 1%"+ 7%2+$ 2+!"/ 1%" ,//"0-,+!&+$ "!$"0 &+))6 1%" )01 *',/ *,!2)" -"/#,/*0 1%" &+ )20&,+ ,# 3"/8 1"5 /"$&,+0 ,1% 1,-,),$& ))6 +! $",*"1/& ))6 %"0" 01"-0 4&)) " !"0 /&"! &+ *,/" !"1&) )1"/ 1 &0 +,1 !&##& 2)1 1, )&01 )) 0"0 4%"/" 6)&+!/& ) ,/ 1,/,8 !&) 02/# " #&10 0 )"+! "14""+ 1%" 14, -/&*/6 02/8 # "0 %" 0&*-)"01 0" &0 1%" ,+" &+ 4%& % 14, &+1"/0" 1&+$ -)+"0 )"+!"! 6 6)&+!/& ) 02/# " 1,/20 + " 20"! 4%"+ )"+!&+$ 1%" "!$" "14""+ ,+& ) +! -)+/ 02/# " 0 0%,4+ &+ &$ + #&/01 -00 ,3"/ )) &+3,)3"! "!$"0 1%" )$,/&1%* 1/&"0 1, *1 % ,+" ,# 1%" 0"0 4%"/" involved and computationally more expensive is the general case, which will be the main topic of this section. A torus provides a smooth blending of the edge between a conical surface and a planar surface. such a solution exists. The corresponding edges are then flagged as analytic. The decision about when to employ analytic or freeform blends, however, is also dependent on other, more global factors. For example, suppose that three cylindrical blends with different radii meet at a common vertex (Fig. 4). This necessitates the inclusion of a freeform vertex region. DeĆ pending on the numerical tolerance used in the system, this might lead to very expensive BĆspline surfaces in terms of data generated (the BĆspline boundaries of the vertex region must lieĊwithin some toleranceĊon the adjacent cylinders). Therefore, it is often necessary to use freeform blends rather than analytic ones at a subset of the edges for the benefit of reducing overall data size. The corresponding checks are done in a second pass over the edges. As a sideĆeffect of switching from an analytic to a freeform blend for a particular edge, other edges adjacent to this one might be affected. This is also taken care of in the second pass. The results of these operations are flags attached to all inĆ volved edges and their end vertices which provide informaĆ tion to all following modules about the types of surfaces to be used. A major advantage of the rollingĆball blend is that its definiĆ tion can be put into mathematical terms quite precisely. SupĆ pose a ball with radius r moves along the edge between the primary surfaces. The curves where the ball touches the surĆ faces will be the boundaries of the blend surface to be inĆ serted. The center of the ball moves along a third curve, the of the canal surface. If the radius of the ball changes while rolling, the curves touching the surfaces will define a variableĆradius blend surface. In HP PE/SolidDesigner a genĆ eral BĆspline curve is used to define the radius function. The spine lies entirely on a surface with constant distance r from the original surface. This is called the . This applies to both primary surfaces. Therefore, we can calculate the spine as the intersection curve of the two offset surfaces (Fig. 5). Computing surface/surface intersections is a ubiquitous problem in solid modeling and many algorithms have been devised for its solution. Very popular are the marching algoĆ rithms, which trace out the intersection curve starting from a given point in its interior. In our blending algorithm, we get such a starting point by taking the midpoint of the original edge and relaxing it onto the spine. The entire curve is then computed by marching the intersection of the two surfaces in both directions. The marching stops when the curve leaves a certain 3D box provided by the calling routine. The boxes are chosen such that the resulting blend surfaces are large enough to fit into the model. The particular strategy we employ for the marching is to reformulate the problem as one of solving a differential equation in several unknowns. The solution is then comĆ puted by a modified Euler method. The task of the second module is to compute the blend boundaries and tangency information along these curves. This information will be used later for the construction of the blend surfaces. The calculation of the boundaries for cylindrical and torodial blends is a straightforward exercise in analytic geometry and will not be described here. More Three cylindrical blends with different radii connected by a freeform vertex region. The center of the rolling ball moves on the intersection curve between the two offset surfaces. October 1995 HewlettĆPackard Journal A common problem in marching algorithms is the choice of an appropriate step size. Choosing the step size too big might lead the algorithm astray. On the other hand, very small steps usually guarantee convergence of the method but might generate too much data. Therefore, we use an adaptive technique based upon the curvature of the intersecĆ tion curve: a small curvature indicates that the intersection curve behaves almost like a straight line. This means that we can proceed with a large step. On the other hand, if the curve bends sharply, that is, its curvature is large, we use very small steps to capture all of its turns. The result of these computations is a set of isolated points lying exactly on both offset surfaces and thus on the spine. Conceptually, the corresponding points on the blend boundĆ aries can be determined by projecting these points onto the original surfaces (Fig. 6). In fact, for parametric surfaces this operation is trivial because the offset surface inherits its paĆ rameterization from the underlying surface. This means that we simply have to evaluate the primary surfaces at the parameter values of the points on the spine. The blend boundaries are now created by constructing cubic Hermitian segments between the given points. However, we still have to check whether the entire segment lies on the surface, within a given tolerance. In cases where it doesn't, we use a fast bisection method for pulling" the curve segĆ ment onto the surface. The first problem is illustrated in Fig. 7. While a small offset leads to wellĆbehaved curves, larger distances result in offset curves with cusps or selfĆintersections. Analogously, we might have degenerate offsets of the primary surfaces if the distance (radius of the blend) is chosen too large. For too large a radius, a rolling ball blend is not possible. When such a situation is detected the marching stops, the entire blend algorithm stops, and the user is advised to try the operation again with a smaller radius. The second type of singularity occurs if the primary surfaces and consequently their offsets possess a common tangent plane (Fig. 8). These tangential intersections typically create the biggest problems for marching algorithms. Loosely speaking, it is very difficult to find where to go at these points. However, a rolling ball blend is still wellĆdefined. The touching curves of the ball are identical with the origiĆ nal edge, and the blend surface degenerates to one with zero width. HP/PE SolidDesigner's kernel enforces the rule that these extraordinary points may only occur at the endĆ points of an edge. This considerably eases the task for the blending algorithm. It is quite simple to check whether the intersection curve degenerates at its endpoints. This informaĆ tion is provided to the routine that performs the marching. Since the algorithm starts at the midpoint of the intersection curve, the occurrence of a singular point of this type indiĆ cates that we have reached one of the endpoints of the edge. While the intersection curveĊand thus the blend boundĆ ariesĊare traced out, we also collect tangential information along the boundaries. This information is used in the surface creation step to construct smooth transitions between the primary surfaces and the blend surface. The same bisection and representation techniques as for the boundary curves are used for these crossĆtangent curves. In a final step, the segments of the boundaries and the crossĆ tangent curves are merged into C1Ćcontinuous BĆsplines. The overall result of this module consists of four C1Ćcontinuous curves with a common parameterization describing the boundary curves and tangency information of the blend surface. Before we conclude this section, we still have to address the question of singularities, which are critical for every marchĆ ing algorithm. In our context, we have to deal with two types of singularities: those of the surfaces to be marched and those of their intersection. After creating the blend boundaries we need to integrate the boundaries into the body. Most important, we have to find the position where the boundaries are to be trimmed. Fig. 9 shows a particularly simple example. The six points shown in blue can be calculated by intersectĆ ing the blend boundaries with the adjacent edges at the end The blend boundaries (red) are created by mapping the spine (black) onto the primary surfaces. October 1995 HewlettĆPackard Journal When the blend radius is chosen too big, the blend boundary will have a cusp (red curve) or even be selfĆintersecting (black curve). " /$! ,-%)-4 .0-"!. $1! /$! .)! *+-)( (+*# /$! ! #! /$! (!* .0-"! (0! !#!*!-/!. 1!-/%!. +2!1!- 0.0((4 /$! .!/ +" ! #!. /+ ! (!* ! 2%/$ ,+..%(4 %""!-!*/ - %% %. *+/ (%)%/! /+ +*! ! #! 0/ )4 +*/%* .!1!-( ! #!. +- !1!* (( +" /$!) $%. )!*. /$/ 2$%(! /$! +0* -%!. +" #%1!* (!* "! -! !%*# /-%))! /$!4 )0./ ! %*/!-.!/! 2%/$ +/$!- (!* +0* 7 -%!. -!/! %* /$! .)! .!..%+* -! ,+%*/. */!-.!/%*# (!* +0* -4 2%/$ * !3%./%*# ! #! +" /$! .+(% )+ !( )4 $1! /$-!! -!.0(/. • *! %*/!-.!/%+* ,+%*/ "+0* $%. %. /$! #!*!-( .! • + %*/!-.!/%+* "+0* $! ! #! %. /++ .$+-/ /+ ! %*/!-7 .!/! 4 /$! (!* +0* -4 * /$%. .! /$! ! #! 2%(( ! -!)+1! "-+) /$! )+ !( $! ! #! *!2(4 //$! /+ /$! 1!-/!3 2%(( *+2 ! %*/!-.!/! 4 /$! (!* +0* -4 !7 ,!/%*# /$%. ,-+! 0-! #0-*/!!. /$! !3%./!*! +" / (!./ +*! %*/!-.!/%+* ,+%*/ • 0(/%,(! %*/!-.!/%+* ,+%*/. "+0* 0$ .%/0/%+* )%#$/ +0- "+- %*./*! %" /$! &!*/ ! #! %. ,-/ +" 7.,(%*! 0-1! 62%##(%*# -+0* /$! (!* +0* -4 * /$%. .! /$! )+./ 1(0(! %*/!-.!/%+* ,+%*/ $. /+ ! $+.!* 1(0(! ,+%*/ %* /$%. +*/!3/ %. /$! +*! /$/ ,-+ 0!. /$! )+./ ,-! %/(! * !3,!/! -!.0(/ $! (!* +0* -%!. -! /-%))! / ,+%*/. 2$!-! /$!4 %*/!-.!/ &!*/ ! #!. (0! +- *+/$!- (!* +0* -4 -! !(!/%*# /$! +--!/ %*/!-.!/%+* ,+%*/ !/2!!* (!* +0* -4 * * &!*/ ! #! (.+ !,!* . +* /$! (+( .0--+0* %*# #!+)!/-4 * "/ 1!-4 +"/!* /$!-! -! .!1!-( ,+..%(! .+(0/%+*. * (( +" /$!) -!.0(/ %* 1(% .+(% )+ !( !1!-( %""!-!*/ -%/!7 -% -! 0.! /+ .!(!/ /$! !./ %*/!-.!/%+* ,+%*/ %# .$+2. /2+ !3),(!. $! -!)%*%*# %*/!-.!/%+* ,+%*/. -! %#*+-! 1%*# +),0/! /$! /-%))%*# ,+%*/. +" /$! (!* +0* 7 -%!. 2! 0%( 0, /$! /+,+(+#4 +" /$! (!* "! $! "%-./ ./!, %. .%)%(- /+ +,!*%*# 5%,,!- /$! +-%#%*( ! #! +" /$! + 4 %. -!,(! 4 /2+ *!2 +*!. +**!/! /+ /$! .)! 1!-/%!. $! *!2 "! %. /$!* !3/!* ! / %/. !* 1!-/%!. +-! ,-!%.!(4 "+0- *!2 ! #!.8/2+ / !$ !* 8-! ! * %/%+* /$! &!*/ ! #!. -! .,(%/ / /$! "+0/-%))%*# ,+%*/. %# +2 /$! "! %. -! 4 "+- /$! %*(0.%+* +" /$! (!* .0-"! $!-! -! /2+ ,+..%%(%/%!. * /$! "%-./ .! *(4/% .0-"!. -! %*.!-/! .! +* /$! !%.%+* ) ! %* /$! "%-./ )+ 0(! +..%(! .0-"! /4,!. -! 4(%* !-. +*!. * /+-0.!. +*(4 %# * (( +/$!- .!. "-!!"+-) .0-"! %. -!/! ! 0.! 7+*/%*0+0. 7.,(%*! .0-"!. $%. .0-"! %. !"%*! 4 /$! (!* +0* -%!. -!/! 4 /$! )-$%*# (#+-%/$) /$! /*#!*4 %*"+-)/%+* (+*# /$!.! +0* -%!. -!,-!7 .!*/! 4 -+.. /*#!*/ 0-1!. * /$! "/ /$/ /$! (!* .0-"! .$+0( $1! %-0(- -+.. .!/%+*. .%*# /$%. '*+2(! #! /$! .0-"! * ! -!/! 1!-4 !.%(4 $! %-07 (- -+.. .!/%+* %. ,,-+3%)/! 4 .%*#(! 0% 7.,(%*! .!#)!*/ (/$+0#$ *+/ ,-!%.! /$%. ,,-+3%)/%+* %. .0""%7 %!*/(4 #++ "+- ,-/%( ,0-,+.!. * "/ #%1!* /$! %*,0/ -!/%*# /$! /+,+(+#4 +" (!* "! /+!- !2(!//7'- +0-*( %" 0&*-)"01 16-" ,# 1"/*&+1&,+ &002" /&0"0 4%"+ 1%"/" &0 ,+)6 ,+" "!$" 1, " )"+!"! ,1% ,2+!/&"0 *201 " ',&+"! 1 1%" "+!0 ,# 1%" )"+! # " %" "0&"01 46 1, !, 1%&0 &0 1, &+1"/0" 1 1%" )"+! # " 4&1% )) "!$"0 +! # "0 ,++" 1"! 1, &10 "+! &$ +1"/0" 1&+$ 1%" )"+! # " 4&1% 1%"0" "!$"0 /"1"0 &+1"/0" 1&,+ -,&+10 4%& % /" 1, " ,++" 1"! 1, #,/* 1%" ,2+!/6 ,# 1%" )"+! # " %" &+1"/0" 1&,+ -,&+10 /" ) 2)1"! 6 2/3"02/# " &+1"/9 0" 1&,+0 "14""+ 1%" )"+! 02/# " +! 1%" 2/3"0 ,# 1%" "!$"0 1 1%" "+! ,# 1%" )"+! # " + $"+"/) 2/3"02/9 # " &+1"/0" 1&,+ 4&)) /"02)1 &+ *2)1&-)" &+1"/0" 1&,+ -,&+10 + 1%&0 0" 1%" ,+" %,0"+ &0 1%" ,+" ),0"01 1, 1%" 3"/1"5 ,# 1%" "!$" 1, " )"+!"! 1 1%&0 "+! *,!") ,+1&+&+$ ,+)6 +)61& )"+! 02/# "0 6)&+!"/ ,+"0 +! 1,/20"0 !1 #,/ 1%" /,00 0" 1&,+:,2+!/6 -,&+10 +! 1+$"+1 !&/" 1&,+0:4" 20" + ,-1&*) --/,5&*1&,+ 0"! ,+ *"1%,! !"0 /&"! 6 ,(("+ %" ,2+!/6 2/3" &+#,/9 *1&,+ +! -/*"1"/&71&,+ 1/+0#"/ !&/" 1)6 1, 1%" 02/# " &$ # 1%"/" &0 +, &+1"/0" 1&,+ -,&+1 ,# 1%" )"+! # " +! + "!$" 1%&0 "!$" &0 /"*,3"! #/,* 1%" *,!") 20&+$ 1%" 2)"/ ,-"/1,/ KEV # 1%&0 "!$" &0 1%" )01 ,+" ,# &10 # " 1%" # " &0 /"*,3"! 20&+$ 1%" 2)"/ ,-"/1,/ KBFV "*,3&+$ + "!$" *"+0 !&0 ,++" 1&+$ &1 #/,* &10 3"/1& "0 +! #&))&+$ 1%" $- 6 ,++" 1&+$ ,1%"/ "!$"0 1, 1%"0" 3"/1& "0 %" +"4)6 ,++" 1"! "!$"0 %3" 1, " &+1"/0" 1"! 4&1% 1%" )"+! # " 1,, ,4"3"/ &# ,+" ,# 1%"0" "!$"0 &0 )0, 1, " )"+!"! + &+1"/0" 1&,+ "14""+ &10 )"+! ,2+!/&"0 +! 1%" )"+! # " &0 ) 2)1"! %" &+1"/0" 1&,+ -,&+10 /" 1%"+ ,++" 1"! 6 &+1"/0" 1&,+ 1/ (0 ,# 1%" )"+! 02/# " +! 1%" !' "+1 ,+"0 + $"+"/) 1%" /"02)1 ,# 1%&0 02/# "02/# " &+1"/0" 9 1&,+ ) 2)1&,+ &0 0"1 ,# &+1"/0" 1&,+ 1/ (0 / (0 1%1 !, +,1 ,+1&+ 1%" &+1"/0" 1&,+ -,&+10 !"0 /&"! ,3" /" #&)9 1"/"! " 20" 1%"6 /" +,1 +""!"! %" /"*&+&+$ 1/ (0 /" 0,/1"! 6 1%" !&01+ " "14""+ 14, &+1"/0" 1&,+ -,&+10 %" 0%,/1"01 / &0 1%" ,+" %,0"+ " 20" &1 *&+&*&7"0 1%" 1/&* /" 1 1%&0 "+! %" )01 01"- &+ &+1"$/1&+$ 1%" )"+! 02/# " &+1, 1%" 0,)&! *,!") &0 1, 1/&* &1 1 1%" "+!0 %" $,) &0 1, (""- 1%" 1/&* /" 0 0&*-)" 0 -,00&)" +#,/12+1")6 1%" 21%,/0 ,# *+6 "!$"9)"+! )$,/&1%*0 002*" 1%1 1%"6 /" !")&+$ 4&1% 1/&**"!9# " 02/# " *,!") +! 1%"6 ,##"/ +, 02$$"01&,+ ,21 4%1 1, !, 1 1%" "+!0 ,# 1%" "!$" 1, " )"+!"! %" 1,-,),$& ) +! $",9 *"1/& ) &002"0 /" .2&1" ,*-)"5 "0-" &))6 4%"+ *2)1&-)" "!$"0 *""1 1 ,**,+ 3"/1"5 /"1&+$ 1%" $",*"1/6 ,# #/""#,/* )"+! 02/# " 1%" ,+1/,) -,)6$,+ ,# 1%" )"+! ,2+!/&"0 )"#1 +! 1%" /"02)1&+$ )"+! 02/# " /&$%1 1,"/ "4)"119 (/! ,2/+) /&**&+$ )"+! 02/# " &+3,)3"0 +2*"/ ,# 2/3"02/# " &+1"/0" 1&,+0 /"! -,&+10 +! 02/# "02/# " &+1"/0" 1&,+0 )2" 2/3"0 ,1" %,4 1%" # "0 */("! !/( /"! /" 8"1"+ 2- 6 1%" )"+! # " When more than two edges to be blended meet at a common vertex, a vertex region is inserted to connect the blends smoothly. A totally different situation occurs when more than two edges meet at a common vertex. In this case a set of addiĆ tional faces and surfaces must be created to build a transiĆ tion patch that smoothly connects all of the blend faces meeting there. This set of faces is called a vertex region (Fig. 15). In some special cases a vertex region has only one face, which is an analytic surface (sphere or torus). In general, however, a vertex region will contain three or more faces. In HP PE/SolidDesigner the number of faces in a vertex region is currently limited to six. Topology of Freeform Vertex Regions. At a vertex where five edges to be blended meet each other, the topology shown in Fig. 16a arises after extending the blend faces as described above. The blending algorithm transforms this topological situation by integrating five faces, each having four edges, as shown in Fig. 16b. Transforming the topology requires the use of the Euler operators KEV, ADEV, and ADED to kill an edge, add an edge, and add a whole face. Fig. 17 shows the sequence of Euler operators. Topology of Analytic Vertex Regions. When a sphere or torus fits a vertex region the topology is changed in another way. Instead of the star" where the blend faces meet, a single face will be created using KEV and ADED, as shown in Fig. 18. Fig. 19 illustrates the algorithm, showing the transformaĆ tion step by step. Geometry of Freeform Vertex Regions. After creating the topolĆ ogy of a vertex region, the corresponding geometry must be constructed and integrated. To provide a smooth transition, (a) (b) (a) Topology of a vertex region where five faces meet after extending the edges. (b) Topology created for the representation of the vertex region. Sequence of Euler operators used to transform the topology of Fig. 16a to the one of Fig. 16b . the surfaces must satisfy two constraints. First, their boundĆ aries must match the ones of the adjacent surfaces. Secondly, the vertex regions and the blend surfaces should possess the same tangent planes along their common boundaries. The construction of vertex regions satisfying those constraints is a classical problem in geometric modeling.9 Among the many solutions, we mention the one proposed by Charrot and Gregory.10 They fill a vertex region by a procedurally deĆ fined surface, that is, a surface that does not have an analytic mathematical representation but rather is defined by a method of generating it. Since the geometry kernel of HP PE/SolidDesigner does not support this type of surface, we employ an algorithm that generates a set of fourĆsided BĆ spline surfaces. More precisely, for filling an nĆsided hole, we use n BĆspline surfaces of polynomial degree 6 in both parameter directions. Geometry of Analytic Vertex Regions. From the geometrical point of view analytic vertex regions are quite easy to comĆ pute because only one surface is needed and the surface type will be either a sphere or a torus. Transition Curves. When large radii are combined with very small radii, a vertex region can look very strange, deformed, or even selfĆintersecting, like the left solid in Fig. 20. In such cases, instead of a threeĆsided vertex region, a fourĆsided one is used, giving a result like the right solid in Fig. 20. In general, an (n+1)Ćsided region is used instead of an nĆsided region. This is done by introducing a transition curve beĆ tween two boundaries sharing the same face. The transition curve is used whenever an intersection of two boundaries is (a) (b) When part of a sphere fits as a vertex region, a single face is created. October 1995 HewlettĆPackard Journal Sequence of Euler operators used to create the face of Fig. 18. behind" the direct connection of its neighboring intersection points. A transition curve (lower edge of the vertex region) is also inserted when two adjacent blend boundaries around a vertex region don't intersect. Geometrically, the transition curve is a BĆspline curve deĆ fined at its endpoints by tangency conditions to both boundĆ aries and in between by a tangency condition to the correĆ sponding face. This curve is created using an adaptive curvatureĆcontrolled bisection algorithm similar to the one used to create the blend boundaries. The endpoints of the transition curves are constructed such that the cross section of the resulting blend surface is an isoparametric of this surĆ face. In certain cases it is also necessary to insert a transition curve to smoothly connect two nonintersecting adjacent blend boundaries. Fig. 21 shows an example. If two boundaries are tangential to others, the intersection point calculation is numerically very unreliable and expenĆ sive. In addition, both blend surfaces share a common region of partial coincidence, so the intersection track calĆ culation is even more expensive than the intersection point calculation. A reliable blending algorithm must be able to handle various topological and geometrical special cases predictably. Four major special cases are tangential intersections, apex creĆ ation, a singularity at the end of a blend surface, and closed curves. Apex Creation. If an edge to be blended is concave, material is added to the solid model. This means that other edges become longer and faces become larger, and sometimes a singular point moves into a face. HP PE/SolidDesigner reĆ quires a topological entity, a vertex, right at the apex in this case. Therefore, after creating the blend face the required vertex is added (Fig. 23). Tangential Intersections. RealĆlife solid models often contain edges connected tangentially at a vertex to another edge. Blending these edges will result in very complex and timeĆ consuming surface/surface intersections in the process of trimming the blend faces at the common vertex, especially when their radii differ only slightly. When the vertex region would be too badly deformed, an additional transition curve is inserted to provide a smoother transition. October 1995 HewlettĆPackard Journal To avoid these problems, two edges to be blended are hanĆ dled in a totally different way. No curve/surface or surface/ surface intersections need to be calculated. Rather, an addiĆ tional face is created that smoothly connects the two surfaces (Fig. 22). Singularity at the End of a Blend Surface. Sometimes at an endĆ point of the edge to be blended the surface normals of the adjacent surfaces are equalĊfor example, two cylinders with the same radius intersected orthogonally (Fig. 24). In this case both boundaries of the blend surface meet at a comĆ mon point where both surface normals are equal. There is Additional faces (red) are inserted where adjacent blends are tangentially connected. The size of a freeform blend surface is basically determined by the complexity of its boundaries. Boundaries with n conĆ trol points lead to surfaces with 4n control points. ConseĆ quently, it is critical to generate approximations of the true" blend boundaries with a minimal amount of data. On the other hand, the creation of the blend boundaries is one of the major factors determining the algorithm's overall perforĆ mance. Finding an acceptable compromise between the conĆ flicting requirements of speed and quality of the solution is an important design decision in the algorithm. When material is added by blending an edge, an apex might move from the boundary to the interior of a face. no need to execute the trimming part of the blend algorithm because the solid is already closed at that end. However, from the geometrical point of view, the blend surĆ face is degenerate. One side or in this case both sides of the blend surface are degenerate isoparametric boundaries. This means that evaluating any parameter space point at this surĆ face boundary results in the same object space point. This object space point is the position where both blend boundĆ aries meet and the adjacent surfaces have the same surface normal. The size of the data structures that represent freeform geomĆ etry mainly depends on the number of control points definĆ ing the curve or surface. In practice, curves can have hunĆ dreds of control points and surfaces many more. As an example, let's consider a mediumĆsize surface with 500 conĆ trol points with three coordinates each. In doubleĆprecision format, such a surface requires 3 × 8 × 500 bytes or approxiĆ mately 12K bytes of memory. In fact, a realĆlife model may contain many freeform surfaces. It is therefore quite imporĆ tant to reduce both the number of such surfaces and the number of control points used to represent them. Another example of two adjacent surfaces that have the same normal at an endpoint of an edge to be blended. The trimming part of the algorithm is not needed. The same applies to the surfaces used for filling the vertex regions. The size of such a surface is quadratically depenĆ dent on the size of its boundary curves. Let's again consider an example. Assume that the boundary curves of a threeĆ sided vertex region are general intersection curves between the primary blend surfaces and planes. It is not uncommon for approximations of those curves to contain 50 control points (HP PE/SolidDesigner works with an accuracy of up to 106). This would lead to a vertex region of 3 × 25 × 25 = 1875 control points (three surface patches of 25 × 25 conĆ trol points each), requiring 3 × 8 × 1875 bytes or approxiĆ mately 44K bytes of data. Clearly, this is unacceptable for nontrivial models. There are several possibilities for reducing the amount of data. The most critical factor is the approximation tolerance used in the system. For example, reducing the accuracy from 106 to 103 typically reduces the size of freeform data structures by a factor of ten. Not only are the geometric calĆ culations speeded up considerably when using a lower accuĆ racy but also the overall performance of the system is imĆ proved because of the reduced demand for memory management. HP PE/SolidDesigner offers the user the ability to select the accuracy in a range of 102 to 106. This allows the user to choose between highĆprecision modeling and a faster but less precise approach. Secondly, the handling of special cases can reduce the amount of data significantly. Let`s again take a look at freeĆ form vertex regions. If the primary blend surfaces are created such that the boundaries of the vertex regions are isoparametric curves of the primary blends (the procedure for doing this is beyond the scope of this article), the 50 control points can be reduced to 4. The vertex region will then contain 3 × 7 × 7 = 147 control points (the additional control points along the boundariesĊseven rather than fourĊare the result of the mathematical construction), for a total of approximately 3.5K bytes. Another example is the trimming of a blend face. In this step a number of surface/surface intersections must be calculated. In general, an intersection of two surfaces will result in not only one curve, but several intersection points, curves, or even surfaces. However, in the blending context there is important knowledge about the blend surface and the face it intersects. At least one and in some cases two points on the intersection track are known from the preceding curve/surĆ face intersections. Providing these points as seeds" to the intersection routines increases both the speed and the reliĆ ability significantly. In addition, boxes in the parameter space of the surface are used to limit the calculation of interĆ section information to regions that are of interest. October 1995 HewlettĆPackard Journal 420 6,)5) ):%03/)5 9) 5)) 6,%6 6,) +22( 28)4%// 3)4*24> 0%1') 2* 6,) %/+24-6,0 -5 0%-1/; +7%4%16))( &; %334234-%6) 53)'-%/ '%5) ,%1(/-1+ %6 '4-6-'%/ 32-165 1 *%'6 % /%4+) 324> 6-21 2* 6,) '2() -1 6,) &/)1(-1+ 02(7/) 9%5 ()8)/23)( 62 ()%/ 9-6, 6,)5) 5-67%6-215 !,) ()8)/230)16 %1( -03/)0)16%6-21 2* 6,) &/)1(-1+ %/+2> 4-6,0 -1 -65 )%4/; 8)45-215 9%5 /%4+)/; '21(7'6)( &; 274 *24> 0)4 '2//)%+7)5 )40%11 )//)40%11 %1( 6)8) 7// 3%46 2* 6,) '2() 9%5 ()8)/23)( %6 -16)* -1 5/2 249%; 2'.922( %1( 9)1 =/)1(-1+ 74*%')5 -1 2/-( 2()/> -1+ -1 Geometric Modeling: Algorithms and New Trends %4-1 )( 33 > $22(9%4. =/)1(5 -1 )20)64-' 2()/-1+ -1 The MatheĆ matics of Surfaces II %46-1 )( :*24( "1-8)45-6; 4)55 33 > '62&)4 )9/)66>%'.%4( 2741%/ #-(% %46-1 %1( ! #%4%(; = 5748); 2* &/)1(-1+ 0)6,2(5 6,%6 75) 3%4%0)64-' 574*%')5 ComputerĆAided Design #2/ 12 33 > %70+%46 Geometric Modeling for Computer Vision , !,)> 5-5 6%1*24( "1-8)45-6; 4%-( -//;%4( %1( 6427( = 6)39-5) 215647'6-21 2* 2/;,)(4% -1 )20)64-' 2()/-1+ -1 Mathematical Methods in Computer Graphics and Design $ 42(/-) )( '%()0-' 4)55 21(21 33 > %16;/% An Introduction to Solid Modeling 20376)4 '-)1') 4)55 2'.8-//) $ 2),0 %1( 4%76<5', Geometric Concepts for Geometric Design )6)45 $-//)5/); ! 2..)1 %),/)1 ! ;',) %1( 24.)1 =22( %3342:> -0%6-21 2* '-4'/)5 &; '748%674) '216-17275 )<-)4 '748)5 ComputerĆ Aided Geometric Design #2/ 33 > 25',). %1( %55)4 Fundamentals of ComputerĆAided GeoĆ metric Design )6)45 $-//)5/); 4)+24; =>5-()( 574*%') 3%6',)5 -1 The Mathematics of Surfaces 4)+24; )( /%4)1(21 4)55 33 >