Advertisement
Matthen

Walking down a corridor

Dec 12th, 2011
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. eye = {0, 0, 0};
  2. screen = {1, 0, 0};
  3. screenU = {0, 1, 0}; screenV = {0, 0, 1};
  4. screenDim = {1, 1};
  5. Project[p_] := Module[{u, v, n},
  6. n = Norm[screen - eye]/(Abs[(screen - eye).p] + 0.001);
  7. u = p.screenU*n;
  8. v = p.screenV*n;
  9. If[Abs[u] < screenDim[[1]]/2 && Abs[v] < screenDim[[2]]/2 &&
  10. p.(screen - eye) > Norm[screen - eye],
  11. {u, v}
  12. ,
  13. False
  14. ]
  15. ];
  16. move[p_, t_] := p + {-t, 0.05 Sin[2 Pi t], 0.2 Cos[2 Pi t]};
  17. Manipulate[
  18. corridor =
  19. Table[Map[{i, 0, 0} + # &, {{0, -1, 2}, {0, -1, -1}, {0, 1, -1}, {0,
  20. 1, 2}, {0, -1, 2}}], {i, -10, 100}];
  21. beams = Table[
  22. Map[{i, 0, 0} + # &, {{0.5, -1, 1.5}, {0.5, 1, 1.5}}], {i, -10,
  23. 100}];
  24. proj = Select[Map[Project[move[#, t]] &, corridor, {2}],
  25. And @@ (VectorQ /@ #) &];
  26. projbeams =
  27. Select[Map[Project[move[#, t]] &, beams, {2}],
  28. And @@ (VectorQ /@ #) &];
  29. Graphics[{
  30. Table[{GrayLevel[i/100], Line[proj[[i]]]}, {i, Length@proj}],
  31. Table[{GrayLevel[i/100], Line[projbeams[[i]]]}, {i,
  32. Length@projbeams}]
  33. }, PlotRange -> 0.5],
  34. {t, 0.01, 1}]
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement