提示コードですが提示画像の赤線のうに正確に半円をベジェ曲線として描くにはどうすればいいのでしょうか?キー入力を実装して色々値を変えてみましたがどうもこの画像ような偏った半円しか描けません。
画像はキー入力で上にすこしずらしたものです。
cpp
1 2glm::vec2 test(glm::vec2 start, glm::vec2 end,float t,glm::vec2 se) 3{ 4 float x = (1 - t) * (1 - t) * start.x + 2 * (1 - t) * t + se.x + t * t * end.x; 5 float y = (1 - t) * (1 - t) * start.y + 2 * (1 - t) * t + se.y + t * t * end.y; 6 7 8 std::cout << x << std::endl; 9 std::cout << y << std::endl; 10 return glm::vec2(x,y); 11} 12 13float lr = 0; 14glm::vec2 AD = glm::vec2(0,0); 15 16//更新 17void Game::Update() 18{ 19 if (windowContext->getKeyInput(GLFW_KEY_A) > 0) 20 { 21 AD.x += 1; 22 23 } 24 else if (windowContext->getKeyInput(GLFW_KEY_D) > 0) 25 { 26 AD.x += -1; 27 28 } 29 else if (windowContext->getKeyInput(GLFW_KEY_W) > 0) 30 { 31 AD.y += 1; 32 33 } 34 else if (windowContext->getKeyInput(GLFW_KEY_S) > 0) 35 { 36 AD.y += -1; 37 38 } 39 40 41 42 43 44 45 46 player->Update(); 47 float a = 0; 48 float t = 0; 49 for (std::vector<Coin>::iterator itr = line->begin(); itr != line->end(); itr++) 50 { 51 itr->setPosition(test(player->getPosition(), coin->getPosition(), a, AD)); 52 t += 100; 53 a += 0.1f; 54 } 55 56 57 58 59 60 61 62} 63 64//レンダリング 65void Game::Renderer() 66{ 67 68 69 player->Draw(); 70 coin->Draw(); 71 72 for (std::vector<Coin>::iterator itr = line->begin(); itr != line->end(); itr++) 73 { 74 itr->Draw(); 75 } 76 77 78}
回答2件
あなたの回答
tips
プレビュー