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

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

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

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Q&A

解決済

1回答

742閲覧

図形の回転 時計回り

退会済みユーザー

退会済みユーザー

総合スコア0

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

0グッド

0クリップ

投稿2023/05/06 05:49

編集2023/05/08 11:11

実現したいこと

矩形を時計回りに回転させて表示させたい。

前提

発生している問題・エラーメッセージ

以下のコードで表示させた図形を特定の角度回転させて新しく色を付けて表示するプログラムを作りたいです。以下のコードは反時計回りのコードなのですがこれを時計回りにしたいです。
時計回りにするにはコードをどのように変えればいいですか?
int posX = 300, posY = 50;
int posX3 = 500, posY3 = 100;

float theta = 1.0f / 8.0f * float(M_PI);
float posX2 = posX * cosf(theta) - posY * sinf(theta);
float posY2 = posY * cosf(theta) + posX * sinf(theta);
float theta2 =1.0f / 4.0f * float(M_PI);
float posX4 = posX3 * cosf(theta2) - posX3 * sinf(theta2);
float posY4 = posY3 * cosf(theta2) + posY3 * sinf(theta2);
DrawBox(posX, posY, 100, 100, 0.0f, WHITE, kFillModeSolid);
DrawBox(posX2, posY2, 100, 100, 0.0f, RED, kFillModeSolid);
DrawBox(posX3, posY3, 100, 100, 0.0f, WHITE, kFillModeSolid);
DrawBox(posX4, posY4, 100, 100, 0.0f, BLUE, kFillModeSolid);

```ここに言語名を入力 C++``` ### 試したこと マイナスを至る所に付けてみましたが思うような場所に図形が表示されませんでした。 ### 補足情報(FW/ツールのバージョンなど) visualstudioを使用

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

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

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

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

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

fana

2023/05/07 05:25 編集

なんというか,こんな場所に質問する前に,まずは「整理」すれば勝手に解決するのではないかと思える. (1. 思考の整理)演算内容を理解してから実装する. →「考え無しにどこぞに - を付けてみる」みたいな馬鹿げた行動に出ずに済む. (2. 実装の整理)演算を関数等の形に実装する. →「同じ演算であるつもりなのにあっちとこっちとで結果が異なる」とかいう馬鹿げた状況の発生を回避できる.
guest

回答1

0

ベストアンサー

反時計回りにするにはコードをどのように変えればいいですか?

theta = -theta; とか。

マイナスを至る所に付けてみましたが思うような場所に図形が表示されませんでした。

プログラミングで「ガチャ」は禁じ手。

投稿2023/05/06 06:41

編集2023/05/06 06:51
episteme

総合スコア16614

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

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

退会済みユーザー

退会済みユーザー

2023/05/06 10:54 編集

‐をつけてみたのですがうまくいきませんでした。theta1の方は-付けなくてもちゃんとした位置に表示されるので、theta2だけに付けてみましたが駄目でした。theta1にも付けてやってみましたが駄目でした。 スクリーン座標系なのも関係ありますかね…
episteme

2023/05/06 13:39

「駄目でした」の説明が必要では? (posX,posY) を原点を中心に theta だけ反時計回りに回転させたのが(posX2,posY2) (posX3,posY3) を原点を中心に theta2 だけ反時計回りに回転させたのが(posX4,posY4) ですか? そうであるなら、後者の計算式が間違ってます。
退会済みユーザー

退会済みユーザー

2023/05/08 11:10

すいません。いま気づいたのですが、質問文に間違いがありました。 質問文には「反時計回りにするにはどうしたらいいか」だったのですが、正しくは「時計回りにするにはどうしたらいいか」です。修正しておきます。なので反時計回りの計算式は合っていると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問