POV-Ray : Newsgroups : povray.object-collection : RoundEdge 1.3.1: elimination of torus artifact Server Time
3 Dec 2024 12:15:27 EST (-0500)
  RoundEdge 1.3.1: elimination of torus artifact (Message 1 to 2 of 2)  
From: Cousin Ricky
Subject: RoundEdge 1.3.1: elimination of torus artifact
Date: 25 Jan 2016 13:20:00
Message: <web.56a666251a5eb08b566b73360@news.povray.org>
See
http://news.povray.org/povray.general/message/%3C5682b65f%241%40news.povray.org%3E/

This artifact rears its ugly head when merging a torus and a cylinder into a
very fat discus-like object.  See p.b.i for an illustration.

I thought surely I had discovered this problem while I was fiddling with the
meniscus code for CoffeeMug in 2013.  But checking the dates on my test files,
it turns out I'd discovered it in 2008, a mere three days after starting work on
RoundEdge.  (I'm not too surprised at this recall failure; meat-based brains are
known to be unreliable.)

I almost immediately realized why my torus-cylinder merges showed this artifact,
which is why I never reported this as a bug.  But bug or not, it is annoying, so
it is fixed in RoundEdge 1.3.1.

http://lib.povray.org/searchcollection/index2.php?objectName=RoundEdge&contributorTag=Cousin%20Ricky

Why I didn't take steps to correct the problem in RoundEdge 1.0 is a mystery.
Another meat brain failure, perhaps?


Post a reply to this message

From: clipka
Subject: Re: RoundEdge 1.3.1: elimination of torus artifact
Date: 25 Jan 2016 14:25:14
Message: <56a6769a$1@news.povray.org>
Am 25.01.2016 um 19:15 schrieb Cousin Ricky:

> I almost immediately realized why my torus-cylinder merges showed this artifact,
> which is why I never reported this as a bug.  But bug or not, it is annoying, so
> it is fixed in RoundEdge 1.3.1.

... and it is also fixed (kind of, that is) in POV-Ray 3.7.1 ;)

You may want to change your RE__torus macro as follows:


#macro RE__torus (RMajor, rMinor, Use_merge)
  #if (RMajor * 2 < rMinor & Use_merge)
    #if (RoundEdge_Inc_Temp >= 3.7.1)
      torus { RMajor, rMinor merge }
    #else
      merge
      { difference
        { torus { RMajor, rMinor }
          sphere { 0, re_R }
        }
        sphere { 0, (re_R + rMinor) / 2 }
      }
    #end
  #else
    torus { RMajor, rMinor }
  #end
#end


Specifying the "merge" keyword after the major & minor radii of a torus
will cause interior surfaces of a spindle torus to be suppressed.

The "difference", "intersection" and "union" keywords also work there as
you might expect (though "union" is only included for completeness, as
it's the default anyway).


Post a reply to this message

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