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