POV-Ray : Newsgroups : povray.advanced-users : Pattern showing *change* in slope Server Time
24 Nov 2024 01:30:23 EST (-0500)
  Pattern showing *change* in slope (Message 1 to 10 of 26)  
Goto Latest 10 Messages Next 10 Messages >>>
From: SharkD
Subject: Pattern showing *change* in slope
Date: 28 Aug 2009 06:52:54
Message: <4a97b706$1@news.povray.org>
How can I create a pattern that shows the *change* in slope of a 
heightfield. I.e., brighter where the "curvature" is greater.

Thanks!

-Mike


Post a reply to this message

From: clipka
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 07:25:22
Message: <4a97bea2$1@news.povray.org>
SharkD schrieb:
> How can I create a pattern that shows the *change* in slope of a 
> heightfield. I.e., brighter where the "curvature" is greater.

You can create this from the image you use for the height field

To begin with, make a pigment from the image; make from that a function F.

Now, create a function G computing the curvature from five function 
values from F, spaced apart by (at least) 1/BITMAP_SIZE, to compute the 
"difference in difference" both vertically and horizontally:

#declare D = 1/BITMAP_SIZE; // insert actual size of your bitmap here
#declare Sqr = function(x) { x*x }
#declare G = function(x,y,z) {
   sqrt(
     Sqr( F(x-D,y,z) + F(x+D,y,z) - 2*F(x,y,z) ) // squared curvature X
     Sqr( F(x,y-D,z) + F(x,y-D,z) - 2*F(x,y,z) ) // squared curvature Y
   )
}

finally, apply this function as a pattern to your height field.


Post a reply to this message

From: Jaime Vives Piqueres
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 07:40:32
Message: <4a97c230@news.povray.org>
SharkD escribió:
> How can I create a pattern that shows the *change* in slope of a 
> heightfield. I.e., brighter where the "curvature" is greater.
> 

I used that for my hf2iso experiment:

//---------------------------------------------------
global_settings{hf_gray_16}

#include "functions.inc"

// file to extract slope from
#declare hf_file="your_hf_here"

// sloped texture with autoilluminated finish
#declare t_terrain_slope=
texture{
  pigment{
   slope y
   color_map{
    [0.00 rgb 0]
    [0.50 rgb 1]
    [0.67 rgb 1]
    [0.75 rgb 0]
    [1.00 rgb 0]
   }
  }
  finish{brilliance 0 ambient 1}
}

// create a heightfield from the bitmat
#declare terrain=
height_field{
  tga hf_file
  translate -.5
  scale <2,1,2>
  texture{t_terrain_slope}
}
object{terrain}

// take a square shot
camera{
  orthographic
  location <0,0,-1>
  up 1*y right 1*x
  angle 90
  look_at 0
  rotate 90*x
}
//---------------------------------------------------


--
Jaime


Post a reply to this message

From: Warp
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 07:45:22
Message: <4a97c352@news.povray.org>
Jaime Vives Piqueres <jai### [at] ignoranciaorg> wrote:
> // sloped texture with autoilluminated finish
> #declare t_terrain_slope=
> texture{
>   pigment{
>    slope y

  That shows the slope of the heightfield, not the *change* in slope,
which is a bit more involved (it would require the derivative of the
function which indicates the slope of the heightfield; since the slope
function is the derivative of the heightfield function, the change in
slope would thus be the double derivative of the heightfield function).

  Maybe the original poster really wanted to actually see the slope,
rather than the change in slope, in which case your answer would be
the correct one.

-- 
                                                          - Warp


Post a reply to this message

From: SharkD
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 09:38:51
Message: <4a97ddeb@news.povray.org>
Warp wrote:
>   That shows the slope of the heightfield, not the *change* in slope,
> which is a bit more involved (it would require the derivative of the
> function which indicates the slope of the heightfield; since the slope
> function is the derivative of the heightfield function, the change in
> slope would thus be the double derivative of the heightfield function).
> 
>   Maybe the original poster really wanted to actually see the slope,
> rather than the change in slope, in which case your answer would be
> the correct one.
> 

Nope. I want the double derivative.

-Mike


Post a reply to this message

From: SharkD
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 09:39:53
Message: <4a97de29$1@news.povray.org>
clipka wrote:
> You can create this from the image you use for the height field
> 
> To begin with, make a pigment from the image; make from that a function F.
> 
> Now, create a function G computing the curvature from five function 
> values from F, spaced apart by (at least) 1/BITMAP_SIZE, to compute the 
> "difference in difference" both vertically and horizontally:
> 
> #declare D = 1/BITMAP_SIZE; // insert actual size of your bitmap here
> #declare Sqr = function(x) { x*x }
> #declare G = function(x,y,z) {
>   sqrt(
>     Sqr( F(x-D,y,z) + F(x+D,y,z) - 2*F(x,y,z) ) // squared curvature X
>     Sqr( F(x,y-D,z) + F(x,y-D,z) - 2*F(x,y,z) ) // squared curvature Y
>   )
> }
> 
> finally, apply this function as a pattern to your height field.

I'll give it a shot, thanks.

-Mike


Post a reply to this message

From: SharkD
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 10:33:34
Message: <4a97eabe$1@news.povray.org>
Warp wrote:
> Jaime Vives Piqueres <jai### [at] ignoranciaorg> wrote:
>> // sloped texture with autoilluminated finish
>> #declare t_terrain_slope=
>> texture{
>>   pigment{
>>    slope y
> 
>   That shows the slope of the heightfield, not the *change* in slope,
> which is a bit more involved (it would require the derivative of the
> function which indicates the slope of the heightfield; since the slope
> function is the derivative of the heightfield function, the change in
> slope would thus be the double derivative of the heightfield function).
> 
>   Maybe the original poster really wanted to actually see the slope,
> rather than the change in slope, in which case your answer would be
> the correct one.
> 

Is there a function in POV that will allow me to automatically take the 
derivative of another function?

-Mike


Post a reply to this message

From: Warp
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 11:12:05
Message: <4a97f3c5@news.povray.org>
SharkD <mik### [at] gmailcom> wrote:
> Nope. I want the double derivative.

  Then your only option is to generate the heightfield using a function
and then use the double derivative of that function with respect to x and
another with respect to y and combine them appropriately to create the
desired pattern, which you then can use to create the pigment.

-- 
                                                          - Warp


Post a reply to this message

From: Warp
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 11:13:36
Message: <4a97f41f@news.povray.org>
SharkD <mik### [at] gmailcom> wrote:
> Is there a function in POV that will allow me to automatically take the 
> derivative of another function?

  Calculating the derivative of a function analytically is not trivial
and has such low demand that povray obviously doesn't offer such a thing.

  A numerical approximation could be easier, but still the demand is so
low that no such luck.

  But I think the user-defined functions are expressive enough for you to
do it in SDL.

-- 
                                                          - Warp


Post a reply to this message

From: SharkD
Subject: Re: Pattern showing *change* in slope
Date: 28 Aug 2009 11:52:04
Message: <4a97fd24$1@news.povray.org>
Warp wrote:
> SharkD <mik### [at] gmailcom> wrote:
>> Is there a function in POV that will allow me to automatically take the 
>> derivative of another function?
> 
>   Calculating the derivative of a function analytically is not trivial
> and has such low demand that povray obviously doesn't offer such a thing.
> 
>   A numerical approximation could be easier, but still the demand is so
> low that no such luck.
> 
>   But I think the user-defined functions are expressive enough for you to
> do it in SDL.
>


Post a reply to this message

Goto Latest 10 Messages Next 10 Messages >>>

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