|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Here's the code, It was pretty old, wrote for pov 3.6. I didn't update it much.
Had to remove a lot of junk. I tested a bunch of bmp files, they where easiest
to make the 16*16 size I wanted. When I thought I had everything set, I found
that the pigment function acted like it was read pass the end of the image map.
Probably floating point troubles. So I rewrote it, scale the image map the size
of the image map and read the colors from the center of each scale pixel
location.
Hopefully I have commented it enough.
Have Fun!
Post a reply to this message
Attachments:
Download 'flat_x.pov.txt' (10 KB)
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Leroy" <whe### [at] gmailcom> wrote:
> Here's the code, [...]
> Have Fun!
Leroy,
reading onther ones code is always a problem for me. Is the following what you
are doing?
Interpolate image:
create array with the size of the new image
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
Fill the array positions with values from image in proper locations (*)
* . . . * . . . * . . . *
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
* . . . * . . . * . . . *
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
* . . . * . . . * . . . *
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
* . . . * . . . * . . . *
Use the values on rows to create a spline.
Use spline to fill gaps (x)
* x x x * x x x * x x x *
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
* x x x * x x x * x x x *
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
* x x x * x x x * x x x *
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
.. . . . . . . . . . . . .
* x x x * x x x * x x x *
Use the values on cols to create a spline.
Use spline to fill gaps (y)
* x x x * x x x * x x x *
y y y y y y y y y y y y y
y y y y y y y y y y y y y
y y y y y y y y y y y y y
* x x x * x x x * x x x *
y y y y y y y y y y y y y
y y y y y y y y y y y y y
y y y y y y y y y y y y y
* x x x * x x x * x x x *
y y y y y y y y y y y y y
y y y y y y y y y y y y y
y y y y y y y y y y y y y
* x x x * x x x * x x x *
If so there is an alternative method:
Use the values on cols to create a spline.
Use spline to fill gaps (y)
* x x x * x x x * x x x *
y . . . y . . . y . . . y
y . . . y . . . y . . . y
y . . . y . . . y . . . y
* x x x * x x x * x x x *
y . . . y . . . y . . . y
y . . . y . . . y . . . y
y . . . y . . . y . . . y
* x x x * x x x * x x x *
y . . . y . . . y . . . y
y . . . y . . . y . . . y
y . . . y . . . y . . . y
* x x x * x x x * x x x *
Detail top left
x1y1 x2y1 x3y1 x4y1 x5y1
x1y2 . . . x5y2
x1y3 . . . x5y3
x1y4 . . . x5y4
x1y5 x2y5 x3y5 x4y5 x5y5
for example to fill the centre dot,
construct spline through x3y1, x3y5 and a spline x1y3, x5y3
get the value of both splines for x3y3 and average those.
Is it better? Pff, what is better? Does it give a different result, yes. It is
closer to the algorithms for bicubic image interpolation.
Thanks for your code.
ingo
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"ingo" <nomail@nomail> wrote:
> "Leroy" <whe### [at] gmailcom> wrote:
> > Here's the code, [...]
> > Have Fun!
>
> Leroy,
>
> reading onther ones code is always a problem for me. Is the following what you
> are doing?
>
>
> Interpolate image:
> create array with the size of the new image
>
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
>
>
> Fill the array positions with values from image in proper locations (*)
>
> * . . . * . . . * . . . *
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> * . . . * . . . * . . . *
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> * . . . * . . . * . . . *
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> * . . . * . . . * . . . *
>
>
> Use the values on rows to create a spline.
> Use spline to fill gaps (x)
>
> * x x x * x x x * x x x *
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> * x x x * x x x * x x x *
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> * x x x * x x x * x x x *
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> .. . . . . . . . . . . . .
> * x x x * x x x * x x x *
>
>
> Use the values on cols to create a spline.
> Use spline to fill gaps (y)
>
> * x x x * x x x * x x x *
> y y y y y y y y y y y y y
> y y y y y y y y y y y y y
> y y y y y y y y y y y y y
> * x x x * x x x * x x x *
> y y y y y y y y y y y y y
> y y y y y y y y y y y y y
> y y y y y y y y y y y y y
> * x x x * x x x * x x x *
> y y y y y y y y y y y y y
> y y y y y y y y y y y y y
> y y y y y y y y y y y y y
> * x x x * x x x * x x x *
>
>
> If so there is an alternative method:
>
> Use the values on cols to create a spline.
> Use spline to fill gaps (y)
>
> * x x x * x x x * x x x *
> y . . . y . . . y . . . y
> y . . . y . . . y . . . y
> y . . . y . . . y . . . y
> * x x x * x x x * x x x *
> y . . . y . . . y . . . y
> y . . . y . . . y . . . y
> y . . . y . . . y . . . y
> * x x x * x x x * x x x *
> y . . . y . . . y . . . y
> y . . . y . . . y . . . y
> y . . . y . . . y . . . y
> * x x x * x x x * x x x *
>
>
> Detail top left
>
> x1y1 x2y1 x3y1 x4y1 x5y1
> x1y2 . . . x5y2
> x1y3 . . . x5y3
> x1y4 . . . x5y4
> x1y5 x2y5 x3y5 x4y5 x5y5
>
> for example to fill the centre dot,
> construct spline through x3y1, x3y5 and a spline x1y3, x5y3
> get the value of both splines for x3y3 and average those.
>
> Is it better? Pff, what is better? Does it give a different result, yes. It is
> closer to the algorithms for bicubic image interpolation.
>
> Thanks for your code.
>
>
> ingo
You got my ideal right.
I would go more into it now ,but
I'm on my phone.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Leroy" <whe### [at] gmailcom> wrote:
> You got my ideal right.
> I would go more into it now ,but [...]
All clear. The way you "by-pass" the scaling complexities by just inserting N
pixels (the Cut) works well. I may nick that for a Nim implementation.
ingo
Post a reply to this message
|
|
| |
| |
|
|
From: Ilya Razmanov
Subject: Version update (was Re: Height field to mesh - more resolution)
Date: 22 Dec 2023 23:15:54
Message: <65865efa$1@news.povray.org>
|
|
|
| |
| |
|
|
On 30.11.2023 7:59, Ilya Razmanov wrote:
> Meanwhile, I hope someone will find this tiny utility useful, and
> probably even come with new ideas.
While discussion in general switched to using of POVRay SDL, I guess
I'll still share the update of initial Python utility, including some
small bugfixes and stuff.
To reduce my contribution into wasting this server storage space, I
decided to waste github space instead, so from now on you can download
updated versions from:
https://github.com/Dnyarri/img2mesh
Ilya
Post a reply to this message
|
|
| |
| |
|
|
From: Ilya Razmanov
Subject: Re: Height field to mesh - more resolution
Date: 13 Jan 2024 05:04:36
Message: <65a26034@news.povray.org>
|
|
|
| |
| |
|
|
On 01.12.2023 10:03, jr wrote:
> "jr" <cre### [at] gmailcom> wrote:
>> Ilya Razmanov <ily### [at] gmailcom> wrote:
>> ...> > For this to be done within POVRay only, I need:
>> aiui, POV-Ray (as of 3.7) has the "tools", ...
>
> proof of concept (640x480 image source). ~20 minutes ;-)
Cheating detected: you are using C4 symmetry, while I simulated real
packing with C3, which requires painful procedure of remembering medium
school math (funny enough, years ago I started with angular functions;
much later I managed to remember of Pythagorean theorem, and yesterday -
a triumph! - I finally managed to make all this down to sqrt(3), which I
hardcoded as a constant, thus removing all linkage to math, rotflmao.
The moral is, you should learn math to get rid of it.)
Anyway, some number of the now resides at
https://github.com/Dnyarri/POVmosaic
variants with, say, rotated boxes looks pseudo-artistic enough to start
boring people with it. Guess I miss C6 symmetry, but "I'll think of it
all tomorrow".
Ilya.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
hi,
Ilya Razmanov <ily### [at] gmailcom> wrote:
> On 01.12.2023 10:03, jr wrote:
> > "jr" <cre### [at] gmailcom> wrote:
> >> Ilya Razmanov <ily### [at] gmailcom> wrote:
> >> ...> > For this to be done within POVRay only, I need:
> >> aiui, POV-Ray (as of 3.7) has the "tools", ...
> >
> > proof of concept (640x480 image source). ~20 minutes ;-)
> Cheating detected:
how so ? "bog standard" SDL.
> you are using C4 symmetry, while I simulated real
> packing with C3, which requires painful procedure of remembering medium
> school math (funny enough, years ago I started with angular functions;
> much later I managed to remember of Pythagorean theorem, and yesterday -
> a triumph! - I finally managed to make all this down to sqrt(3), which I
> hardcoded as a constant, thus removing all linkage to math, rotflmao.
> The moral is, you should learn math to get rid of it.)
> Anyway, some number of the now resides at {...}
> variants with, say, rotated boxes looks pseudo-artistic enough to start
> boring people with it. Guess I miss C6 symmetry, but "I'll think of it
> all tomorrow".
so there's the confusion, "jr" and "maths" only fit into one sentence when
followed by laughter :-). I have no idea (yet) what "C3" and "C4" symmetries
might be; on the ever-increasing ToDo list.
> Ilya.
regards, jr.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"jr" <cre### [at] gmailcom> wrote:
I have no idea (yet) what "C3" and "C4" symmetries
> might be; on the ever-increasing ToDo list.
Those are symmetry groups. They're used to define, and simplify geometric
permustations (at least in chemistry wrt to molecule shapes and electron orbital
/ energy states)
https://en.wikipedia.org/wiki/Group_theory#Chemistry_and_materials_science
https://en.wikipedia.org/wiki/Group_theory
C refers to a cylcical group, where the number refers to how many dicrete ways
you can arrange something and have it be "different".
A circle is C1
A "double semicircle", theta, "half moon" is C2, since you can rotate it 180
deg, and so you have 2 symmetric orientations.
triangles C3
Squares C4
pentagons C5
Hexagons C6
It gets a bit complicated when you start looking at even the simple, yet
non-trivial structures
https://www.globalsino.com/EM/page3137.html
which is every bit as "fun" as it looks. Especially when your Inorganic
Chemistry professor is ... special. ;)
It would certainly be interesting to have a library of transforms that would
reorient things based upon symmetry groups, and then it would probably be
possible to analyze a given object to determine what symmetry group it was
in....
(and NO, at this point I'm not doing that. :P )
- BW
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 13.01.2024 14:29, jr wrote:
>
> I have no idea (yet) what "C3" and "C4" symmetries
> might be
> regards, jr.
>
C3 is triangle tiling ("parquet"), while C4 is square parquet. It's easy
to visualize bitmap image as square pixel parquet and, therefore, turn
it into C4 tiling of some 3D objects, having the same step distance
along both x and y axes. With C3, however, step along one axis (in my
version, x) is equal to triangle side (which, in my case, is
2*sphere_radius), while step along the other (in my version, y) is equal
to triangle height (which would be sqrt(3)*sphere_radius). As a result,
if you compare my s4zaika and s3zaika programs, both have just two
nested loops along y and x, across the image, but s4zaika have a normal
for y in range(0, Y, 1):
loop, while s3zaika have some weird
triangleheight = 0.5 * 1.7320508075688773
Ycount = int(Y/triangleheight)
for y in range(0, Ycount, 1):
loop, where 0.5 is the sphere radius; and apparently reads source PNG
pixels with non-integer coordinates; all this requires some work from my
rusty more than 0.5*century old encephalon :-)
So, now I have C2 (hidden inside C4 sourcecodes), C3 and C4; C5 does not
exist, as do not C7 and above; so I have only C6 ("honeycomb") remain
uncovered. But it need remembering some more school math...
Ilya
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
hi,
"Bald Eagle" <cre### [at] netscapenet> wrote:
> "jr" <cre### [at] gmailcom> wrote:
> I have no idea (yet) what "C3" and "C4" symmetries
> > might be; on the ever-increasing ToDo list.
Ilya Razmanov <ily### [at] gmailcom> wrote:
> ...
thanking both of you for trying to explain, appreciated. this "symmetries"
stuff is much deeper though than I can "cope with", for now.
regards, jr.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|