coding Shift_JIS; import GUI; 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.03; // スライダーの振幅 const float SLIDER_AMPLITUDE = 1.0; // シミュレーションの時間刻み const float DT = 0.01; // 1フレームのアニメーションウェイト const int WAIT = 20; // グラフのIDを格納する変数 int graph; // スライダーの値を保持する変数 float sliderValue = 0.0; // メインループの継続/脱出を制御する変数 bool mainLoopState = true; // 自由端かどうか bool freeEnd = false; /** * main関数、最初にシステムから呼び出されます。 */ void main(){ // 初期化処理 initialize(); // メインループへ mainLoop(); } /** * メインループ部分です。 */ void mainLoop(){ // 描画を一定周期ごとに行うためのカウンタ int plotTiming = 50; int plotCounter = 0; // メインループ while(mainLoopState){ // 状態の更新処理(力学シミュレーション) update(); // plotTiming回に一回、グラフを描画する if(plotCounter == plotTiming){ // 状態をグラフに描画 setGraph2DData(graph, vertexX, vertexY); // 少し待機(アニメーションウェイト) sleep(WAIT); // 描画タイミングのカウンタをリセット plotCounter = 0; } // 描画タイミングのカウンタを加算 plotCounter++; } //メインループを抜けたらプログラム終了 exit(); } /** * 初期化処理を行います。 */ void initialize(){ // 頂点Xの初期値設定 for(int i=0; i