 |
 |
|
 |
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Finally had a moment of clarity, and figured out a fish-scale pattern that I
wanted to make.
Post a reply to this message
Attachments:
Download 'mathpatterns1.png' (64 KB)
Preview of image 'mathpatterns1.png'

|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Bald Eagle" <cre### [at] netscape net> wrote:
> Finally had a moment of clarity, and figured out a fish-scale pattern that I
> wanted to make.
And here's a modification to make it less semi-circular.
Post a reply to this message
Attachments:
Download 'mathpatterns1.png' (45 KB)
Preview of image 'mathpatterns1.png'

|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
I was trying to track down something completely unrelated, and came across this
page:
National Curve Bank
A Collection of Famous Plane Curves
created in POVRAY (Persistence Of Vision RAY tracing)
https://old.nationalcurvebank.org/povray/povray.htm
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Was setting up a basic scene for a completely unrelated pattern, and came up
with this.
Trying to consistently get functions to behave consistently across N=0 is a
giant PITA in POV-Ray, when I don't think it ought to be.
- BW
Post a reply to this message
Attachments:
Download 'newpattern.png' (282 KB)
Preview of image 'newpattern.png'

|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 25/02/2025 03:02, Bald Eagle wrote:
> Was setting up a basic scene for a completely unrelated pattern, and came up
> with this.
>
> Trying to consistently get functions to behave consistently across N=0 is a
> giant PITA in POV-Ray, when I don't think it ought to be.
Really impressive patterns. What a good job.
Just for a french reader, what PITA meens ?
--
kurtz le pirate
compagnie de la banquise
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 25.02.2025 10:34, kurtz le pirate wrote:
> Just for a french reader, what PITA meens ?
Pain in the ass.
--
Ilyich the Toad
https://dnyarri.github.io/
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 2/24/25 21:02, Bald Eagle wrote:
> Was setting up a basic scene for a completely unrelated pattern, and came up
> with this.
I really like this one!
Bill P.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
William F Pokorny <ano### [at] anonymous org> wrote:
> On 2/24/25 21:02, Bald Eagle wrote:
> > Was setting up a basic scene for a completely unrelated pattern, and came up
> > with this.
>
> I really like this one!
>
> Bill P.
Super. Maybe you can help me understand why I always have to go through a NEW
form of calisthenics when I cross zero.
(and as you can see, the pattern function is dirt simple)
#version 3.8;
global_settings {assumed_gamma 1}
default {finish {diffuse 1}}
//#include "colors.inc"
#include "functions.inc"
#include "math.inc"
#declare E = 0.000001;
#declare Zoom = 20;
camera {
orthographic
location <0, 0, -50>
right x*image_width/Zoom
up y*image_height/Zoom
look_at <0, 0, 0>
rotate y*0
}
sky_sphere {pigment {rgb 1}}
light_source {<0, 0, -50> rgb 1}
#declare fmod = function (Value, Modulo) {select (Value, 1 - mod (abs (Value),
Modulo), mod (abs (Value), Modulo))} // this gives a mod function that remains
consistant across the origin
#declare Formula1 = function {(y-sin(x))*(y-cos(x))} // graphs 2 functions
simultaneously
#declare Formula2 = function {
select (y,
select (odd(floor(y/2)), 0, (fmod(y, 2)-sin(x))*(fmod(y, 2)-cos(x)), (fmod(y,
2)+sin(x))*(fmod(y, 2)+cos(x)) ),
select (odd(floor(y/2)), 0, (fmod(y, 2)-1-sin(x))*(fmod(y, 2)-1-cos(x)),
(fmod(y, 2)-1+sin(x))*(fmod(y, 2)-1+cos(x)) ) // why?
)
}
// debugging loop
#for (Y, -10, 10)
#declare Value = odd(floor(Y/2));
#declare Value2 = fmod(Y,2);
#debug concat (" Y = ", str(Y, 0, 0), " Value = ", str(Value, 0, 0), "
Value2 = ", str(Value, 0, 0), "\n")
#end
#declare Formula = function {Formula2 (x, y, z)}
#declare RawPattern = pigment {function {Formula (x, y, z)}}
#declare Thickness = 0.1;
#declare LinePattern = pigment {function {select (abs (Formula (x, y, z)) -
Thickness, 0, 1)}} // Once (<=1)
#declare LinePattern2 = pigment {function {select (abs (mod (Formula (x, y, z),
1)) - Thickness, 0, 1)}}
plane {z, 0 texture {pigment {LinePattern} finish {diffuse 1}} translate -z*0.1}
Post a reply to this message
|
 |
|  |
|  |
|
 |
From: William F Pokorny
Subject: Re: Making Patterns with functions
Date: 25 Feb 2025 18:22:52
Message: <67be50cc@news.povray.org>
|
|
 |
|  |
|  |
|
 |
On 2/25/25 06:34, Bald Eagle wrote:
> Super. Maybe you can help me understand why I always have to go through a NEW
> form of calisthenics when I cross zero.
> (and as you can see, the pattern function is dirt simple)
If you are working with an equation you wish to use as a pattern, and
the value of y, say, crossing through 0.0 flips or changes the
function's behavior, one must deal with it in some way.
In your particular function there is a flip in behavior due internal
value changes away from zero and another due y changing sign.
Below a yuqk fork scene showing some typical ways for dealing with value
transitions causing unwanted change with your function based pattern.
Some work with official POV-Ray releases too. To reproduce your result,
however, we might need to do something pretty close to what you did! I
didn't try to exactly match your posted result.
// Sample scene. 'yuqk y_cross_0.pov +w1024 +h768 +p +mv3.8'
global_settings { assumed_gamma 1.0 }
#declare VarOrthoMult =
20.0/max(image_width/image_height,image_height/image_width);
#declare Camera01z = camera {
orthographic
location <0,0,-2>
direction z
right VarOrthoMult*x*max(1,image_width/image_height)
up VarOrthoMult*y*max(1,image_height/image_width)
}
// 'odd()' is one of the fake keywords shipped with official
// POV-Ray which the yuqk fork removed.
#include "functions.inc"
#include "munctions.inc"
#local Dummy = M_odd(0.5); // compiling F_odd()
#local EvenOdd = M_odd(0); // Later calls run F_odd internally
#local EvenOdd = F_odd(2); // = 0
#local EvenOdd = F_odd(3); // = 1
#declare Formula1 = function { (y-sin(x))*(y-cos(x)) }
// When y moving through zero flips results, it's typical to use
// pattern value modifiers or similar inbuilt functions.
#if (1) // Call as FnY(0,y/2,0)
#declare FnY = function {
pattern { gradient y triangle_wave }
}
#elseif (0) // Call as FnY(0,y/4,0)
#declare FnY = function {
pattern { gradient y function_interval triangle_wave }
}
#elseif (0) // Call as FnY(0,y/2,0)
#declare FnY = function {
f_triangle_wave(y,0)
}
#elseif (0) // Call as FnY(0,y/4,0)
#declare FnY = function {
f_triangle_wave(y,1)
}
#else
#error "Must pick a definition of function Fny()\n"
#end
#declare Formula2 = function {
pattern {
function { Formula1(x,y,z) }
triangle_wave
frequency 4
}
}
#declare Formula3 = function { // Push y positive
Formula1(x,
select(
F_odd(f_round(y+100+0.5)),
0,
mod(y+100,1),
1-mod(y+100,1)),0)
}
#declare FnLine = function {
select(((Formula2(x,y,z)>-0.1) & (Formula2(x,y,z)<0.1)),
0, 0, 1)
}
plane { -z 0
pigment {
//function { Formula1(x,y,z) }
//function { Formula1(x,FnY(0,y/2,0),z) }
//function { Formula2(x,FnY(0,y/2,0),z) }
function { FnLine( x,FnY(0,y/2,0),z) }
//function { Formula3(x, y,z) }
//raw_wave
color_map {
[-2 rgb <1,0,0>]
[-0.01 rgb 0]
[+0.01 rgb 0]
[+2 rgb <0,1,0>]
}
}
finish { emission 1 }
}
camera { Camera01z }
#if (0)
union {
sphere {<0, 0,0> , 0.1 }
sphere {<0,+1,0> , 0.1 }
sphere {<0,+2,0> , 0.1 }
sphere {<0,-1,0> , 0.1 }
sphere {<0,-2,0> , 0.1 }
pigment { rgb <1,0,0>} finish { emission 1 }
}
#end
Image attached.
Bill P.
Post a reply to this message
Attachments:
Download 'y_cross0.png' (415 KB)
Preview of image 'y_cross0.png'

|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
William F Pokorny <ano### [at] anonymous org> wrote:
>...
> Image attached.
I like this pattern.
It's lovely!
--
Tor Olav
http://subcube.com
https://github.com/t-o-k
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|
 |