ソース補充
貴様は今までに書いたソースコードの数を覚えているのか!?
テストで連成振動の式が書けなかったので、腹いせ(?)にソース書いたよ!
#include "DxLib.h" #include <math.h> void wait() { static int before; while (GetNowCount()-before < 17) ; before = GetNowCount(); } int init_window() { ChangeWindowMode(TRUE); SetGraphMode(400, 180, 32); if (DxLib_Init() == -1) return -1; SetDrawScreen(DX_SCREEN_BACK); return 0; } void draw_circle(double x) { DrawCircle(x, 100, 25, GetColor(0, 0, 0), FALSE); DrawCircle(x, 100, 24, GetColor(255, 255, 255), TRUE); } void draw_back(double x2) { DrawBox(0, 0, 400, 200, GetColor(255, 255, 255), TRUE); DrawLine(30, 100, x2, 100, GetColor(0, 0, 0)); DrawLine(30, 50, 30, 126, GetColor(0, 0, 0)); DrawLine(30, 126, 380, 126, GetColor(0, 0, 0)); } int WINAPI WinMain( HINSTANCE hIns, HINSTANCE hPIns, LPSTR cl, int ncs ) { if (init_window()==-1) return 0; double x1, x2; double q10, q20; double kappa, omg1, omg2; double v, t; double sqrt5 = sqrt(5.0); kappa = 1.0; v = 100.0; omg1 = (sqrt5+1)/2*sqrt(kappa); omg2 = (sqrt5-1)/2*sqrt(kappa); q10 = (3*sqrt5-5)/20*v/sqrt(kappa); q20 = (3*sqrt5-5)/20*v/sqrt(kappa); t = 0; while (ProcessMessage()!=-1) { ClsDrawScreen(); x1 = 150 + 2*q10*sin(omg1*t) + 2*q20*sin(omg2*t); x2 = 300 - (sqrt5+1)*q10*sin(omg1*t) + (sqrt5-1)*q20*sin(omg2*t); draw_back(x2); draw_circle(x1); draw_circle(x2); t+=0.1; wait(); ScreenFlip(); } DxLib_End(); return 0; }
はじめつりあいの位置にあって、右側の粒子に初速度vを与えた時の動きをします。
ぼよんぼよ~んって動きます。
DXライブラリをしようしているので、適当にググれば使い方はわかるかと。