coding Shift_JIS; import Math; import tool.Graph2D; // ラインの頂点数 const int N = 1024; // ラインの頂点の座標 float vertexX[N]; float vertexY[N]; // ラインの頂点の速度 float vertexVY[N]; // ラインの頂点に働く力 float vertexFY[N]; // 媒質の長さ const float LENGTH = 10.0; // 単位長さあたりの質量密度 const float DENSITY = 100.0; // 張力 const float TENSION = 10.0; // 減衰力係数 const float FRICTION = 0.0; // 初期パルスの幅 const float PULSE_WIDTH = 0.3; // 初期パルスの高さ const float PULSE_HEIGHT = 1.0; // 自由端かどうか const bool FREE_END = true; // シミュレーションの時間刻み const float DT = 0.01; // 1フレームのアニメーションウェイト const int WAIT = 20; // グラフのIDを格納する変数 int graph; /** * main関数、最初にシステムから呼び出されます。 */ void main(){ alert("シミュレーションを開始します"); // 初期化処理 initialize(); // メインループへ mainLoop(); } /** * メインループ部分です。 */ void mainLoop(){ // 描画を一定周期ごとに行うためのカウンタ int plotTiming = 50; int plotCounter = 0; // メインループ while(true){ // 状態の更新処理(力学シミュレーション) update(); // plotTiming回に一回、グラフを描画する if(plotCounter == plotTiming){ // 状態をグラフに描画 setGraph2DData(graph, vertexX, vertexY); // 少し待機(アニメーションウェイト) sleep(WAIT); // 描画タイミングのカウンタをリセット plotCounter = 0; } // 描画タイミングのカウンタを加算 plotCounter++; } } /** * 初期値の設定を行います。 */ void initialize(){ // 頂点Xの初期値設定 for(int i=0; i