Document 12969612

advertisement
 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 >
Download