質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

707閲覧

ゲームプログラムに置けるベジェ曲線の制御点の求め方が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2021/05/16 08:19

提示コードのtest関数部ですが参考サイトの式をそのまま入れて制御点を求めたいのですがx3という場所にどんな値を入れればいいのでしょうか?いろいろ触りましたがわかりません

参考サイト: https://dixq.net/g/s_01.html

cpp

1glm::vec2 test(glm::vec2 start, glm::vec2 end,float t,glm::vec2 se) 2{ 3 float x = (1 - t) * (1 - t) * start.x + 2 * (1 - t)* t + se.x + t * t * end.x; 4 float y = (1 - t) * (1 - t) * start.y + 2 * (1 - t) * t + se.y + t * t * end.y; 5 6 7 std::cout << x << std::endl; 8 std::cout << y << std::endl; 9 return glm::vec2(x,y); 10} 11 12 13//更新 14void Game::Update() 15{ 16 glm::vec2 pos = test(player->getPosition(),coin->getPosition(),0.2,glm::vec2(0,-10)); 17 18 coin2->setPosition(pos); 19 20} 21 22//レンダリング 23void Game::Renderer() 24{ 25 26 27 player->Draw(); 28 coin->Draw(); 29 coin2->Draw(); 30 31 32 33} 34

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/16 08:35

「t」が何か理解してますか?
退会済みユーザー

退会済みユーザー

2021/05/16 08:38

時間です
退会済みユーザー

退会済みユーザー

2021/05/16 08:50

> 時間です 時間を「0.2」と固定している意図はなんでしょうか。 また、制御点(参考サイトでは方向点)に「glm::vec2(0,-10)」を設定している意図は何でしょうか。 > 参考サイトの式をそのまま入れて制御点を求めたい そもそもですが、参考サイトにある式は別に制御点を求めるものじゃありません
退会済みユーザー

退会済みユーザー

2021/05/16 09:12

方向点にはどんな値を入れればいいのでしょうか?
退会済みユーザー

退会済みユーザー

2021/05/16 09:15

> 方向点にはどんな値を入れればいいのでしょうか? あなたの描きたい曲線となる値を入れればいいですよ それは他人にはわかりません
guest

回答1

0

ベストアンサー

「二次のベジェ曲線」の計算式は、

float x = (1 - t) * (1 - t) * start.x + 2 * (1 - t)* t + se.x + t * t * end.x; float y = (1 - t) * (1 - t) * start.y + 2 * (1 - t) * t + se.y + t * t * end.y;

でなく、

float x = (1 - t) * (1 - t) * start.x + 2 * (1 - t)* t * se.x + t * t * end.x; float y = (1 - t) * (1 - t) * start.y + 2 * (1 - t) * t * se.y + t * t * end.y;

となるのではないでしょうか。

提示コードのtest関数部ですが参考サイトの式をそのまま入れて制御点を求めたいのですがx3という場所にどんな値を入れればいいのでしょうか?

参考サイトの「二次のベジェ曲線」であれば、x3は終点なので、player側を始点、coin側を終点とするのであれば提示のコードで問題ありません。

「制御点を求めたい」とのことですが、すでに「glm::vec2(0,-10)」を求めて使用しているようですので、
あらためて計算する必要もないでしょう。
(この座標が想定した曲線に相応しいものかはわかりません)

あとは時間が「0.2」の固定となっているので、曲線として動かすのであれば、変化させるようにしましょう。

投稿2021/05/16 09:12

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問