アプリケーションの 4 点画像変換に取り組んでいます。ユーザーは、各コーナーをドラッグして有効な四角形を作成するか、その「バウンディング ボックス」を使用して垂直方向、水平方向、および比例的にサイズを変更します。
これまでのところ、画像変換部分が機能しています。しかし、私はそれに制限を課すのに苦労しています...
- 頂点は互いに交差しません。つまり、ユーザーが砂時計の形を作成することを許可していません。常に四角形でなければなりません。
- 同様に、各コーナー間の角度は 0 より大きくする必要があります。そうしないと、頂点が直線になります。
- この画像には最小サイズがあります。つまり、各コーナーは、互いに、およびそれらの反対側の線から一定の距離離れている必要があります。
- ユーザーは、画像を裏側に「反転」することはできません。4 つのコーナー (p1、p2、p3、および p4) は、時計回りの順序で表示される必要があります。
- 凹型の凧の形と三角形が有効です。
これらの問題に関する公式または論文があるかどうか疑問に思っていました。私は現在、2 つの線分が交差するかどうか (およびどこで交差するか) を見つけるための式と、線上の別の点に最も近い点を見つけるための式を持っています。私の実装のほとんどは、私が好きなようにユーザーフレンドリーではありませんでした.
PS このプロジェクトでは、DirectX を使用して C# を使用しています。ただし、アプリケーションは 2D のみです。