
使用風箏和飛鏢第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>
帖子指向視頻