🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C++

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

Q&A

解決済

1回答

934閲覧

ベジエ曲線がだせない

hamatyan

総合スコア5

C++

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

0グッド

0クリップ

投稿2019/12/14 17:03

編集2019/12/16 13:02

# 内容
ベジエ曲線で移動させたいがなかなかその通りには移動しません。ベジエ曲線の式をそのまま入れて移動したいのですがどこが間違っているかわからないです。使用している式は(a + b)² = a² + 2ab + b² これです。

ソースコード

C++

1//更新 2p_Particle[i].fPos += p_Particle[i].fMove; 3 4//座標指定 5p_Particle[i].Pos0 = { 0,0,0 }; 6p_Particle[i].Pos1 = { 5,5,0 }; 7p_Particle[i].Pos2 = { 10,0,0 }; 8 9//ベジエ曲線計算処理 10for (float t = 0.0f; t < 1.0f; t += 0.01f) 11{ 12   p_Particle[i].fMove = ((1 - t)*(1 - t) * p_Particle[i].Pos0 + 2*(1-t)*t*p_Particle[i].Pos1+t*t*p_Particle[i].Pos2) * 0.01f; 13}

プログラム補足

p_Particleはクラス構造体です
p_Particle[i].fMoveはXMFLOAT3で宣言してます
p_Particle[i].Pos0~p_Particle[i].Pos2はPos0→Pos2に移動します
p_Particle[i].fMove = の後の*0.01fは速度の調整です

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

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

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

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

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

2KOH

2019/12/15 00:41

少なくとも提示されたコードには p_Particle の定義がありません。 実行することによりこの質問の問題点を確認でき、かつ問題点の確認に無関係な部分を削った最小限のコードを提示してください。 問題点を明示してください。 エラーが起きているのかバグがあるのか、エラーならエラーメッセージ、バグならバグが発生する入力例とそのときの期待する出力と実際の出力を提示してください。
jimbe

2019/12/15 10:29

C++ のコードなのでしたら, ご質問に付けた C のタグは外して頂けますか.
hamatyan

2019/12/16 13:02

すいません以後気お付けます
guest

回答1

0

ベストアンサー

ベジェ曲線の式は位置を求める式で、速度を求める式ではないので、以下のコードはおかしいです

p_Particle[i].fPos += p_Particle[i].fMove;

以下の部分でfMove の値を常に上書きしていますが、
tの値によって求まる位置がベジェ曲線で移動する位置です
t=0なら、Pos0の位置だし、t=1なら、Pos2の位置です

(なので、最後の0.01fは位置を動かしているので付ける意味がわからない)

for (float t = 0.0f; t < 1.0f; t += 0.01f) {    p_Particle[i].fMove = ((1 - t)*(1 - t) * p_Particle[i].Pos0 + 2*(1-t)*t*p_Particle[i].Pos1+t*t*p_Particle[i].Pos2) * 0.01f; }

投稿2019/12/16 08:50

izmktr

総合スコア2856

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

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

hamatyan

2019/12/16 14:19

回答ありがとうございます。 最後の0.01fはMoveの速度を調整するために0.01fとかけています。
izmktr

2019/12/16 19:34

意味が理解できていませんか? その式は位置を求める数式で、速度ではありませんから、0.01をかけても1/100に縮小された位置が出るだけです 位置を速度のように用いても意味がありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問