- ベストアンサー
多角形の座標を定義
RECT 構造体は四角形の左上隅と右下隅の座標を定義するものではあると思いますが 多角形の座標を定義する構造体はないのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> RECT構造体は四角形の左上隅と右下隅の座標を定義するものではあると思いますが これは、正しいとも間違いとも言えません。 C標準にはRECT構造体なるものはありません。 あなたの言う「RECT構造体」は何かのライブラリやAPI用に追加されたもので、その定義として「四角形の左上隅と右下隅の座標」としているだけです。 例えば、↓このRECT構造体はWindowsAPI用に用意されたものです。 MacやLinuxのCではそのままでは使えません。 Windowsでも、#includeで適切なヘッダを読み込まなければ使えません。 http://msdn.microsoft.com/ja-jp/library/a5ch4fda%28v=VS.80%29.aspx 他のライブラリで別の定義をしても構いません。 対応した関数等をちゃんと用意できれば、「四角形の右上隅と左下隅の座標」とか「四角形の左上隅座標と大きさ」とかで「RECT構造体」を作っても構わないわけです。 > 多角形の座標を定義する構造体はないのでしょうか? これも同様に、C言語にはありません。 そのRECTが定義されているライブラリのマニュアル等を調べて、無いのなら「そのライブラリには」存在しないのでしょう。 無いのなら、適当に作ればいいのです。 どう定義するか、は、それをどう使いたいかを考え、都合のいいものにすればいいです。 例えば、上記のMFCを使って、Windowsの画面に多角形を書きたい、といった場合は、CDC::Polygon で簡単に使えるものがよいと考えられます。 http://msdn.microsoft.com/ja-jp/library/hhkhd4xz%28v=VS.80%29.aspx そうすると、引数にあった型で POINT構造体の配列と、点の数を記憶できるようなものがよいでしょう。
お礼
調べ方がわからなかったので自作のを作ってみたのですが、構造体を作ったところで判定処理させるのがどうすればいいか悩んでいたのですが 解決法を思いつきました。 ┏の場合 四角形を4っつつくって斜めの部分を上と左の重複判定させれば斜めに移動させれると思いました。 ただ、判定箇所は □□■■■□□ □ □ ■ ■ ■ ■ ■ ■ □ □ □□■■■□□ ではなく □■■■■■□ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ □■■■■■□ になりそうですが
補足
<<このRECT構造体はWindowsAPI用に用意されたものです。 MacやLinuxのCではそのままでは使えません。 Windowsでも、#includeで適切なヘッダを読み込まなければ使えません。 ということはwin32APIにあるかどうかを調べればいいのですね どうやれば調べられますか? <<例えば、上記のMFCを使って、Windowsの画面に多角形を書きたい、といった場合は、CDC::Polygon で簡単に使えるものがよいと考えられます。 いえ、書きたいわけでなく判定に使いたいのです。 四角形の内部にかかれた画像をマウスを 左上、右上、左下、右下にマウスを乗せたらスクロールするプログラムを作りたいのですが、左上、右上、左下、右下をそれぞれ2つに分ければRECT構造体で定義させて判定させればうまくいくと思いますが、多角形の判定にして処理を短くできないかな?っと思いまして質問させていただきました。 下のような図で ┌ の部分にマウスを持っていけば左上に移動するプログラムですね ┌ - ┐ | | └ - ┘