|
|
Wasn't it Ron Parker who wrote:
>To answer your next question, merge isn't primitive either.
>
>merge {object{A} object{B}} is the same as
>intersection{object{A inverse} object{B inverse} inverse}
>
>but it's not actually implemented that way, for historical reasons (there's
>nothing to be gained by rewriting it, so nobody ever did.)
Not only is there nothing to be gained by rewriting it, but it would end
up being much less efficient in most cases. The bounding box of a merge
using the current code tends to be a good fit, but the bounding box of
the inverse intersection inverse is usually infinite.
I claim that merge{object{A} object{B}} is more like being the same as
#declare U = union{object{A} object{B}}
intersection{object{A inverse} object{B inverse} inverse
bounded_by{box{min_extent(U),max_extent(U)}}
}
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|