Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.postscript > #972
| From | "luser.droog" <luser.droog@gmail.com> |
|---|---|
| Newsgroups | comp.lang.postscript |
| Subject | Revolving Camera prototype |
| Date | 2012-09-23 22:30 -0500 |
| Organization | unorganized |
| Message-ID | <k3ok5b$4e0$1@dont-email.me> (permalink) |
| References | (18 earlier) <k369dh$u0a$2@dont-email.me> <19l2060m89rf3.qhkwlr9njofj.dlg@40tude.net> <k3be7v$cna$1@dont-email.me> <14ft6rfdwakqg.wjjegxgk9adf$.dlg@40tude.net> <k3bmam$dfd$1@dont-email.me> |
Here's a silly little scene with a cube, a tetrahedron, and axis lines.
But now, the object stays still and the camera moves around it.
I suppose next I should try to learn how to do Z-buffering.
%!
/olddiv /div load def
/div { dup 0 eq { pop pop 100000 }{ olddiv } ifelse } def
(mat.ps)run
/I3 3 ident def
/disp <<
/cam [ 0 0 10 ] % Camera position
/theta [ 0 0 0 ] % Rotation sequence
/eye [ 0 0 20 ] % Eye relative to image surface
/Rot I3
>> def
/makerot {
theta 0 get roty
theta 1 get rotx matmul
theta 2 get rotz matmul
} def
% Ax Ay Az
/proj { DICT begin
%3 array astore
%dup == flush
cam {sub}vop %Camera translation
%pstack()=
Rot matmul %Camera rotation
0 get aload pop % Dx Dy Dz
eye aload pop % Dx Dy Dz Ex Ey Ez
%pstack()=
4 3 roll div % Dx Dy Ex Ey Ez/Dz
exch neg % Dx Dy Ex Ez/Dz -Ey
4 3 roll add % Dx Ex Ez/Dz Dy-Ey
1 index mul % Dx Ex Ez/Dz Ez(Dy-Ey)/Dz
4 1 roll 3 1 roll % Ez(Dy-Ey)/Dz Ez/Dz Dx Ex
sub mul exch % Ez(Dx-Ex)/Dz Ez(Dy-Ey)/Dz
%pstack ()=
end } dup 0 disp put def
/L 10 def
/axes {
[
[ [ 0 0 L neg ] [ 0 0 L ] ]
[ [ 0 L neg 0 ] [ 0 L 0 ] ]
[ [ L neg 0 0 ] [ L 0 0 ] ]
] { aload pop proj moveto proj lineto } forall
} def
/v [[ 1 1 -1 ] %cube vertices
[ -1 1 -1 ]
[ -1 -1 -1 ]
[ 1 -1 -1 ]
[ 1 1 1 ]
[ -1 1 1 ]
[ -1 -1 1 ]
[ 1 -1 1 ]] def
/fv [[ 0 1 2 3 ] %cube faces out of vertices
[ 0 4 5 1 ]
[ 1 5 6 2 ]
[ 2 6 7 3 ]
[ 3 7 4 0 ]
[ 4 7 6 5 ]
] def
/ev [[0 1][1 2][2 3][3 0] %cube edges
[0 4][1 5][2 6][3 7]
[4 5][5 6][6 7][7 4]] def
/tv [[ 0 5 7 ] %tetrahedron faces
[ 0 5 2 ]
[ 2 5 7 ]
[ 0 2 7 ]] def
/R 20 def
/H -3 def
/ang 0 def
%stepon
{
%300 400 translate
300 700 translate
1 70 dup dup scale div setlinewidth
%(1)=
{
disp begin
/cam [
ang sin R mul
H
ang cos R mul %neg
] def
/theta [
ang %neg
%180 add
H R atan %neg
0
] def
%2 copy get ang add put
/Rot makerot def
end
} exec%pop
tv {
{ v exch get proj } forall
moveto lineto lineto closepath
1 0 0 setrgbcolor fill
} forall
tv {
{ v exch get proj } forall
moveto lineto lineto closepath
0 setgray stroke
} forall
{
ev {
{ v exch get proj } forall
moveto lineto %lineto lineto closepath
} forall
0 1 0 setrgbcolor stroke
} exec%pop
axes 0 0 1 setrgbcolor stroke
/flushpage where { pop flushpage
80000 { .2 sin .2 cos atan pop } repeat
} if
showpage
/ang ang 3 add def
} loop
currentfile flushfile
{
[ [1 1 1] [2 2 2] [3 3 3] ]
dup { {add}vop } vop % yay! vop composes!
pstack
%:r!gsnd -q %
[[2 2 2] [4 4 4] [6 6 6]]
0 0 0 proj moveto
1 0 0 proj lineto
1 1 0 proj lineto
0 1 0 proj lineto
closepath
0 0 1 proj lineto
1 0 1 proj lineto
1 0 0 proj lineto
1 0 1 proj moveto
1 1 1 proj lineto
1 1 0 proj lineto
1 1 1 proj moveto
0 1 1 proj lineto
0 1 0 proj lineto
0 1 1 proj moveto
0 0 1 proj lineto
} pop
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