Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.postscript > #914
| From | Luser droog <mijoryx@yahoo.com> |
|---|---|
| Newsgroups | comp.lang.postscript |
| Subject | Re: Hula-Hoop Hullaballoo! Re: ping luser- -droog: SVG or PS project for you? |
| Date | 2012-09-03 12:29 -0500 |
| Organization | Netfront http://www.netfront.net/ |
| Message-ID | <k22peg$2fpt$1@adenine.netfront.net> (permalink) |
| References | (7 earlier) <67041f2e-e3e3-44e6-99ee-3d4accbaed25@googlegroups.com> <1h6zz5p1ua7nx$.1bghff5yydx4a$.dlg@40tude.net> <k1mjct$2pld$1@adenine.netfront.net> <1crb2uv6n8aor$.ypijta16vm02.dlg@40tude.net> <k20hls$433$1@adenine.netfront.net> |
Luser droog wrote:
> tlvp wrote:
>
>> On Wed, 29 Aug 2012 21:32:52 -0500, Luser droog wrote:
>>
>>> tlvp wrote:
>>>
>>>> On Thu, 23 Aug 2012 23:58:25 -0700 (PDT), luser- -droog wrote:
>>>>
>>>>> ...
>>>>> Well, here's one way to add color.
>>>>> The generator is really just a triple loop
>>>>>
>>>>> for x = -2.2 .. 2.2 step 1/res
>>>>> for y = -2.2 .. 2.2 step 1/res
>>>>> for z = -2.2 .. 2.2 step 1/res
>>>>> if (f(x,y,z)) { plot(x,y,z) }
>>>>>
>>>>> So the "sweep" is along the x-axis of the object
>>>>> (ie. pre-rotation). So if we snag the x coord
>>>>> and shift and scale it to 0..1, we can get a
>>>>> rainbow with sethsbcolor (my go-to color trick).
>>>>> The nice benefit is that it turns pale blue
>>>>> right in the center where the cross section becomes
>>>>> a circle. Everywhere else it's a truncated circle
>>>>> or a square.
>>>>>
>>>>> I've also reduced the number and size of the points
>>>>> and tweaked the fuzz to get more moire.
>>>>>
>>>>> 49(1)01:43 AM:ps 0> cat 3d2.ps
>>>>> %!
>>>>> % Point-field sampling
>>>>> % with data caching (in a file),
>>>>> % point-wise axial rotations,
>>>>> % and perspective projection
>>>>> % and color.
>>>>>
>>>>> ... [details snipped] ...
>>>>>
>>>>> /flushpage where {pop flushpage} if
>>>>> showpage
>>>>> } for
>>>>
>>>> The color adds very nicely to the effect, thank you, moy droog :-) .
>>>>
>>>> Two things keep surprising me, though, in the graphics swept out:
>>>> first, the large number of times the eye beholds squares unfolding;
>>>> and, second, the total absence of any swept out figures whose
>>>> silhouette is a disc.
>>>>
>>>> After all, peering straight at the figure directly along any of the
>>>> three principal axes (x-axis, y-axis, z-axis) should reveal a circular
>>>> outline.
>>>>
>>>> The squares are the cartographic "contour level-lines" with respect to
>>>> heights measured along those axes, but small squares near the top and
>>>> bottom should grow as squares only up to a certain point, and then
>>>> start to balloon out to become more and more circle-like, finally
>>>> becoming a true circle at mid-height exactly. Why doesn't that strike
>>>> the eye more blatantly, at least occasionally?
>>>>
>>>> I know, it sounds like "Mrrble, mrrble, grubs again!" but it's not,
>>>> really, I'm just curious :-) ... and hoping maybe to catch a glimpse of
>>>> a tiny variation in how to compute (or to color) the lines being drawn,
>>>> so as better to capture the spirit of that Steinmetz Solid. And, in the
>>>> meantime, I think what you have is great! Again, my thanks!
>>>>
>>>
>>> Well, I think to make any real progress, we need to transform it into
>>> an easier-to-calculate form. Casselman frequently uses parametrization,
>>> so I thought that was the thing to do. So,
>>>
>>> Max(x^2+y^2, y^2+z^2, x^2+z^2)=4
>>>
>>> If we take x=r*cos t, y=r*sin t, then for one "third" of the shape,
>>>
>>> r^2 * cos^2 t + r^2 * sin^2 t = 4
>>> r^2 (sin^2 t + cos^2 t) = 4
>>> r = +/- 2
>>>
>>> and 0 < t < 2pi
>>>
>>> That reduces it to 2 variables t and z, right?
>>> But I'm not sure what to do next. Keep z as it is?
>>> Or convert it to an angle, too?
>>>
>>> I think I'll go back to the simple side and try to draw
>>> the cylinders themselves as wireframes (circles one way,
>>> rectangles the other two). Then I should be able to
>>> draw each one constrained by the other two, I think.
>>>
>>>
>>> --- Posted via news://freenews.netfront.net/ - Complaints to
>>> news@netfront.net ---
>>
>> Here's another way to think of the geometric object itself.
>>
>> Start by picturing a cube -- sides of length 4, say -- with
>> spindle-shafts drilled perpendicularly through it at each face.
>>
>> Now chuck it (with the help of a spindle through one of those shafts),
>> and lathe-turn it down until everything at distance 2 or more from the
>> center of rotation is cut away. See it? A cylinder of height 4 and
>> diameter 4.
>>
>> Now pick a new shaft, chuck it with help of a spindle through that shaft,
>> and turn it down until everything at distance 2 or more from the center
>> of rotation is cut away. See it? A "roundly beveled former cylinder ...
>> ."
>>
>> Now, using a spindle through the last shaft, chuck it again, and proceed
>> as earlier, i.e., turn it down until everything at distance 2 or more
>> from the center of rotation is cut away. See it? The Steinmetz Solid.
>>
>> Think there's any hope of showing how it's gradually revealed through
>> that last lathe-turning procedure?
>>
>> Me, I'm just not up to keeping tabs on all the recursion/iteration
>> needed.
>>
>
> I can definitely imagine it better after reading this.
> But drawing it? Not so sure. To simulate a lathe, we need
> a material that can be cut and removed. That would lead
> me back toward the point-field. Then we could maybe animate
> a tool revolving and deactivate the corresponding points in
> the field. But I think it would be painfully slow.
>
> This one simplifies (perhaps too much) the shape to projected
> polygon rings. Imagine a big hotel atrium with a suspended
> sculpture of hula-hoops and you're ascending upon it in the
> glass elevator.
>
> This looks worse than the previous, but I still consider it
> a step forward because the calculation is more elegant.
> Most of the execution time of the other program is calculating
> points that fail to show up. Because it has to make sure not
> to draw them.
>
> Now with this wireframe, I think I can evolve it to "fill-in"
> the gaps and make rectangles out of points in corresponding
> rings. Then we can get a normal vector for the "face" and
> only draw the "front" of the shape.
>
> The other -lemma is finally learning how those matrix projections
> work. And to squash the rotation sequence into a single matrix.
> That seems to call for a fully-general matrix multiplication
> routine. And a utility to do transposes. Of course I know these
> things exist, but to "own" it, I have to write my own. Even if it's
> straight from some wikipedia pseudocode. It's like a Hunter Thompson
> thing. Where he re-typed the works of Hemmingway to know what
> it felt like to write those books. Once I've written my own version
> of something, I'm on the inside of it rather than the outside.
> Like gematria.
>
> Anyhoo. On to the picture.
>
> 554(1)03:41 PM:ps 0> cat 3d3.ps
I've added the parallels by drawing each segment as a little box.
Sadly, this makes it about 4x slower.
I have an intuition that eofill can discern between the the front
and back rectangles since their orientations are quite literally
reversed. But that doesn't help me avoid stroking them.
566(0)12:22 PM:ps 0> cat 3d3.ps
%!
/.setlanguagelevel where { pop 2 .setlanguagelevel } if
% x y z ang -> x y' z'
/rotx { 3 dict begin
/theta exch def
/z exch def
/y exch def
y theta cos mul
z theta sin mul sub
y theta sin mul
z theta cos mul add
end } def
% x y z ang -> x' y z'
/roty { 4 dict begin
/theta exch def
/z exch def
/y exch def
/x exch def
x theta cos mul
z theta sin mul add
y
x theta sin mul neg
z theta cos mul add
end } def
% x y z ang -> x' y' z
/rotz { 4 dict begin
/theta exch def
/z exch def
/y exch def
/x exch def
x theta cos mul
y theta sin mul sub
x theta sin mul
y theta cos mul add
z
end } def
% Eye coords
/ex .2 def
/ey .2 def
/ez 5 def
% x y z -> X Y
/project {
%ang roty
%ang .25 mul rotx
%alpha rotz
beta roty
gamma rotx
3 dict begin
/z exch def
/y exch def
/x exch def
1 ez z sub div
x ez mul z ex mul sub
1 index mul
y ez mul z ey mul sub
3 2 roll mul
end } def
/moveto { z project //moveto } def
/lineto { z project //lineto } def
%h R N
/cylinder { 5 dict begin
/N exch def
/R exch def
/h exch def
/dz 1 N div def
/dt 360 dz mul def
/hdz h dz mul def
0 dz 1 dz sub {
h mul h 2 div sub /z exch def
%R 0 moveto
0 dt 360 {
dup
dup cos R mul
exch sin R mul
2 copy moveto % R t z
/z z hdz add def
lineto % R t z+dz
dt sub
dup cos R mul
exch sin R mul
2 copy lineto % R t-dt z+dz
/z z hdz sub def
lineto % R t-dt z
closepath
} for
%closepath
} for
end } def
%/alpha 0 def
/beta 0 def
/gamma 0 def
0 10 180 { /ang exch def
/ey ang 180 div 5 mul 2.5 sub def
/dep 20 def
300 400 translate
60 dup dup scale 1 exch div setlinewidth
%/alpha ang def
/beta 0 def
/gamma 0 def
4 2 dep cylinder
%/alpha ang def
/beta 90 def
/gamma 0 def
4 2 dep cylinder
%/alpha ang def
/beta 0 def
/gamma 90 def
4 2 dep cylinder
%gsave %false upath
%erasepage
%grestore %uappend
stroke
/flushpage where { pop flushpage } if
%copypage
showpage
} for
--- Posted via news://freenews.netfront.net/ - Complaints to news@netfront.net ---
Back to comp.lang.postscript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
ping luser- -droog: SVG or PS project for you? tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-07-17 04:48 -0400
Re: ping luser- -droog: SVG or PS project for you? luser- -droog <mijoryx@yahoo.com> - 2012-07-17 08:16 -0700
Re: ping luser- -droog: SVG or PS project for you? tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-07-17 19:25 -0400
Re: ping luser- -droog: SVG or PS project for you? luser- -droog <mijoryx@yahoo.com> - 2012-08-17 23:40 -0700
Re: ping luser- -droog: SVG or PS project for you? luser- -droog <mijoryx@yahoo.com> - 2012-08-18 00:14 -0700
Re: ping luser- -droog: SVG or PS project for you? tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-08-18 22:44 -0400
Moire Madness! Re: ping luser- -droog: SVG or PS project for you? luser- -droog <mijoryx@yahoo.com> - 2012-08-23 13:00 -0700
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-08-24 01:45 -0400
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-08-24 01:49 -0400
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? luser- -droog <mijoryx@yahoo.com> - 2012-08-23 23:11 -0700
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? luser- -droog <mijoryx@yahoo.com> - 2012-08-23 23:58 -0700
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-08-25 02:17 -0400
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? Luser droog <mijoryx@yahoo.com> - 2012-08-29 18:25 -0500
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? Luser droog <mijoryx@yahoo.com> - 2012-08-29 21:32 -0500
Re: Moire Madness! Re: ping luser- -droog: SVG or PS project for you? tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-08-30 05:26 -0400
Hula-Hoop Hullaballoo! Re: ping luser- -droog: SVG or PS project for you? Luser droog <mijoryx@yahoo.com> - 2012-09-02 16:04 -0500
Re: Hula-Hoop Hullaballoo! Re: ping luser- -droog: SVG or PS project for you? Luser droog <mijoryx@yahoo.com> - 2012-09-03 12:29 -0500
Re: Hula-Hoop Hullaballoo! Re: ping luser- -droog: SVG or PS project for you? Luser droog <mijoryx@yahoo.com> - 2012-09-04 12:04 -0500
Re: Hula-Hoop Hullaballoo! Re: ping luser- -droog: SVG or PS project for you? "M. Joshua Ryan" <mijoryx@yahoo.com> - 2012-09-04 12:49 -0500
A shaded cylinder luser- -droog <mijoryx@yahoo.com> - 2012-09-04 18:11 -0700
Re: A shaded cylinder luser- -droog <mijoryx@yahoo.com> - 2012-09-11 13:03 -0700
Spinning Steinmertz Solid (approx.) luser- -droog <mijoryx@yahoo.com> - 2012-09-11 21:29 -0700
Mulligan (again) luser- -droog <mijoryx@yahoo.com> - 2012-09-13 19:07 -0700
Re: Mulligan (again) tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-09-14 05:05 -0400
Heineken time "luser.droog" <luser.droog@gmail.com> - 2012-09-15 16:50 -0500
Bigger and Badderer "luser.droog" <luser.droog@gmail.com> - 2012-09-16 23:33 -0500
Re: Bigger and Badderer "luser.droog" <luser.droog@gmail.com> - 2012-09-16 23:37 -0500
QapplaH! "luser.droog" <luser.droog@gmail.com> - 2012-09-17 11:34 -0500
Re: QapplaH! (appendix: updated mat.ps) "luser.droog" <luser.droog@gmail.com> - 2012-09-17 13:05 -0500
one more cup of coffee for the road. "luser.droog" <luser.droog@gmail.com> - 2012-09-18 02:51 -0500
Re: Bigger and Badderer tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-09-18 21:52 -0400
Re: Bigger and Badderer "luser.droog" <luser.droog@gmail.com> - 2012-09-18 22:30 -0500
Re: Bigger and Badderer tlvp <mPiOsUcB.EtLlLvEp@att.net> - 2012-09-19 00:59 -0400
Re: Bigger and Badderer "luser.droog" <luser.droog@gmail.com> - 2012-09-19 00:48 -0500
Revolving Camera prototype "luser.droog" <luser.droog@gmail.com> - 2012-09-23 22:30 -0500
Steinmetz with Revolving Camera "luser.droog" <luser.droog@gmail.com> - 2012-09-24 09:30 -0500
csiph-web