Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- eye = {0, 0, 0};
- screen = {1, 0, 0};
- screenU = {0, 1, 0}; screenV = {0, 0, 1};
- screenDim = {1, 1};
- Project[p_] := Module[{u, v, n},
- n = Norm[screen - eye]/(Abs[(screen - eye).p] + 0.001);
- u = p.screenU*n;
- v = p.screenV*n;
- If[Abs[u] < screenDim[[1]]/2 && Abs[v] < screenDim[[2]]/2 &&
- p.(screen - eye) > Norm[screen - eye],
- {u, v}
- ,
- False
- ]
- ];
- move[p_, t_] := p + {-t, 0.05 Sin[2 Pi t], 0.2 Cos[2 Pi t]};
- Manipulate[
- corridor =
- Table[Map[{i, 0, 0} + # &, {{0, -1, 2}, {0, -1, -1}, {0, 1, -1}, {0,
- 1, 2}, {0, -1, 2}}], {i, -10, 100}];
- beams = Table[
- Map[{i, 0, 0} + # &, {{0.5, -1, 1.5}, {0.5, 1, 1.5}}], {i, -10,
- 100}];
- proj = Select[Map[Project[move[#, t]] &, corridor, {2}],
- And @@ (VectorQ /@ #) &];
- projbeams =
- Select[Map[Project[move[#, t]] &, beams, {2}],
- And @@ (VectorQ /@ #) &];
- Graphics[{
- Table[{GrayLevel[i/100], Line[proj[[i]]]}, {i, Length@proj}],
- Table[{GrayLevel[i/100], Line[projbeams[[i]]]}, {i,
- Length@projbeams}]
- }, PlotRange -> 0.5],
- {t, 0.01, 1}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement