POV-Ray : Newsgroups : povray.newusers : Merging Isosurfaces Server Time
1 Nov 2024 16:21:58 EDT (-0400)
  Merging Isosurfaces (Message 1 to 3 of 3)  
From: Basiclife
Subject: Merging Isosurfaces
Date: 28 Jan 2008 10:20:01
Message: <web.479df26828aaf275cc12f9390@news.povray.org>
Hi,

I wonder if anyone can help me, I'm trying to create an isosurface which from
above will be shaped as a T. My first idea was to do a rectangle and then cut
off the bits I didn't want with a difference{} but this still calculates the
whole isosurface which seems inefficient. My next plan was to have 2 isosurface
with the same function to create the T shape. The problem is, I need the
isosurface to reflect/refract and allow light to pass through it. My
understanding is that instead of union{}ing the 2 isosurfaces, I simply needed
to merge{} them - but unfortunately, thsi leaves strange artifacts visible
(vertical black lines) I've tried overlapping the 2 isosurfaces in case it was
due to a rounding error on the boundary to no effect. I've increased max_trace
by an order of magnitude which hasn't helped either.

Can someone please point me in the right direction?

Thanks in advance,

Basiclife


Post a reply to this message

From: Mike Williams
Subject: Re: Merging Isosurfaces
Date: 28 Jan 2008 11:46:22
Message: <EzwqOgCYPgnHFw8H@econym.demon.co.uk>
Wasn't it Basiclife who wrote:
>Hi,
>
>I wonder if anyone can help me, I'm trying to create an isosurface which from
>above will be shaped as a T. My first idea was to do a rectangle and then cut
>off the bits I didn't want with a difference{} but this still calculates the
>whole isosurface which seems inefficient. My next plan was to have 2 isosurface
>with the same function to create the T shape. The problem is, I need the
>isosurface to reflect/refract and allow light to pass through it. My
>understanding is that instead of union{}ing the 2 isosurfaces, I simply needed
>to merge{} them - but unfortunately, thsi leaves strange artifacts visible
>(vertical black lines) I've tried overlapping the 2 isosurfaces in case it was
>due to a rounding error on the boundary to no effect. I've increased max_trace
>by an order of magnitude which hasn't helped either.
>
>Can someone please point me in the right direction?

One possible approach is to produce a single isosurface that has the
required shape


global_settings { max_trace_level 10 }

#declare Box = function { max((y*y-1),(x*x-1),(z*z-1)) }

isosurface {
  function {  min(
                Box(x,y*4-4,z*4),
                Box(x*4,y,z*4)
              )
           }
           max_gradient 45
           contained_by{sphere{0,2}}
           pigment {rgbt .9}
           interior {ior 1.3}
}

See: http://www.econym.demon.co.uk/isotut/combine.htm

-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

From: Simon
Subject: Re: Merging Isosurfaces
Date: 28 Jan 2008 16:14:47
Message: <479e45c7$1@news.povray.org>
"Mike Williams" <nos### [at] econymdemoncouk> wrote in message 
news:Ezw### [at] econymdemoncouk...
> Wasn't it Basiclife who wrote:
>>Hi,
>>
>>I wonder if anyone can help me, I'm trying to create an isosurface which 
>>from
>>above will be shaped as a T. My first idea was to do a rectangle and then 
>>cut
>>off the bits I didn't want with a difference{} but this still calculates 
>>the
>>whole isosurface which seems inefficient. My next plan was to have 2 
>>isosurface
>>with the same function to create the T shape. The problem is, I need the
>>isosurface to reflect/refract and allow light to pass through it. My
>>understanding is that instead of union{}ing the 2 isosurfaces, I simply 
>>needed
>>to merge{} them - but unfortunately, thsi leaves strange artifacts visible
>>(vertical black lines) I've tried overlapping the 2 isosurfaces in case it 
>>was
>>due to a rounding error on the boundary to no effect. I've increased 
>>max_trace
>>by an order of magnitude which hasn't helped either.
>>
>>Can someone please point me in the right direction?
>
> One possible approach is to produce a single isosurface that has the
> required shape
>
>
> global_settings { max_trace_level 10 }
>
> #declare Box = function { max((y*y-1),(x*x-1),(z*z-1)) }
>
> isosurface {
>  function {  min(
>                Box(x,y*4-4,z*4),
>                Box(x*4,y,z*4)
>              )
>           }
>           max_gradient 45
>           contained_by{sphere{0,2}}
>           pigment {rgbt .9}
>           interior {ior 1.3}
> }
>
> See: http://www.econym.demon.co.uk/isotut/combine.htm
>
> -- 
> Mike Williams
> Gentleman of Leisure

Many thanks for the response,

that seems like exactly what I need to do. I'm going to try and do as you 
suggesed with my formulae and hopefully it should all work. If I have any 
issues, I may need to come back and ask some more questions

Many thanks

Basiclife


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.