上の画像のような曲線を描きたいです。それをキー入力で真っすぐの状態と曲がった状態に自由に変化させたいです。
とりあえず下のようなコードを書いてみましたが、以下のような問題点があります。
1、初期状態(画像の左側の状態)では、線が真っすぐじゃない
2、キー入力で線を曲げていくと、等速ではなく加速する(等速で移動して欲しい)
どうすれば、上の2つの問題を解決できるのでしょうか?
OS:Windows10
コンパイラ:VisualStudio2010
言語:C
#include"DxLib.h"
#define SPEED (50)
#define ADD (30)
int f(int x, int V){
return -(x) * (x) / (V);
}
int ConvertX(int X){ return X + 400; }
int ConvertY(int Y){ return -Y + 600; }
int ProcessLoop(){
if(ProcessMessage() != 0){ return 0; }
if(ClearDrawScreen() != 0){ return 0; }
return 1;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
ChangeWindowMode(TRUE);
SetGraphMode(800, 600, 16);
if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0){ return -1; }
int Value = 10000;
while(ProcessLoop() && !CheckHitKey(KEY_INPUT_ESCAPE)){
if(CheckHitKey(KEY_INPUT_RIGHT) && Value < 10000){
Value += SPEED;
}
if(CheckHitKey(KEY_INPUT_LEFT) && Value > 1550){
Value -= SPEED;
}
for(int x = 0; x < 600; x += ADD){
DrawLine(ConvertX(f(x, Value)), ConvertY(x), ConvertX(f(x + ADD, Value)), ConvertY(x + ADD), GetColor(0,255,0));
}
DrawFormatString(700, 10, GetColor(255,255,255), "Value:%d", Value);
ScreenFlip();
}
DxLib_End();
return 0;
}