
使用风筝和飞镖第2部分, 制作一个 3D 表面。 一些 Scene3D 代码是从 JMP 附带的一些示例中借用的。 这个 JSL 是为了制作视频剪辑而编写的。 隐藏在其中的是一些缩放和动画控制值,经过调整以使视频恰到好处。 桌面上还有一个目录路径,该目录将填充编号位图。 第 4 部分将解释如何使用 JMP 之外的其他工具将位图组合成视频。
此代码预计第 2 部分中的变量仍保留在 JMP 的内存中。
scale = 50;//50;
sbscale = .5;//2;//.4;//1;
///////////////// 3D ///////////////////
fn = Function( {x, y},
x /= scale;
y /= scale;
(((1 + Cos( -Pi() + fraction * 2 * Pi() )) / 2) ^ .95) * scale * Sin( 100 * fraction * Pi() + Sqrt( x * x + y * y ) );
); // the function to plot. the sheet color assumes the result is between -1 and +1.
addvertex = Function( {a, b, c},
If(
af < 100, b[3] += Random Normal( 0, If( af <= 0, .1, 1 / Sqrt( 100 * af ) ) ),
af > nframes, b[3] += Random Normal( 0, .01 * Sqrt( af - nframes ) ),
0
);
// calculate the normal; this is the vector cross product of the two lines leaving b to a or c
qx = a[1] - b[1];
qy = a[2] - b[2];
qz = a[3] - b[3];
px = c[1] - b[1];
py = c[2] - b[2];
pz = c[3] - b[3];
nx = py * qz - pz * qy;
ny = pz * qx - px * qz;
nz = px * qy - py * qx;
// normalize the normal vector (sheet<<ENABLE>= nframes, ((nframes - af) / 10) - 15, af <= 0, (af / 10) - 15, -15 ) );
scene << enable( FOG );
scene << fog( FOG_END, 25 ); // fog ends 3 units away, 1 beyond origin
scene << fog( FOG_START, 20 ); // fog begins
scene << fog( FOG_MODE, LINEAR );
changeangle( af );//show(zangle);
scene << Rotate( xangle, 1.0, 0.0, 0.0 ); // spin around the X axis
scene << Rotate( yangle, 0.0, 1.0, 0.0 ); // and the Y axis
scene << Rotate( zangle, 0.0, 0.0, 1.0 ); // and the Z axis
scene << arcball( sheet, 8 );
scene << Update;
Wait( 0 );
// scene << savepicture( picdir || Right( Char( picno++ ), 6, "0" ) || ".png" );
);
</ENABLE>
帖子指向视频