-3

タイトルに記載されているように、正方形、長方形、および十字の面積を計算するにはどうすればよいですか? ユーザーはすべての座標を入力します。square と rect の場合、領域は簡単ですが、クロスします。どうすればよいですか? また、ユーザーが座標を十字に入力した場合、面積計算が正確になるように、3 つすべての長さと幅を取得するにはどうすればよいですか?? 以下は十字架の図ですが、かなりトリッキーです..

    ****
    *  *
 ****  ****
 *        *
 ****  ****
    *  *
    ****

//this is for square and rectangle,but to take note,user will input from from bottom left to right, then top right to left, so the caculation below will than work
l = (((x1-x2)^2 + (y1-y2)^2))^(1/2);
w = (((x1-x4)^2 + (y1-y4)^2))^(1/2);
A=l*w;

また、形状の座標点と形状の座標点を取得するにはどうすればよいですか?

例: 正方形の座標は (1,1)、(3,1)、(1,3)、(3,3) です。

したがって、正方形の座標は (2,2) です

正方形上の座標は (1,2),(2,1),(3,2),(2,3)

4

4 に答える 4

3

十字は2つの長方形の重ね合わせですが、重なっている領域を1回だけ数える必要があります。

総面積は次のとおりです。

の領域:

 ****
 *  *
 *  *
 *  *
 *  *
 *  *
 ****

プラスの面積

 **********
 *        *
 **********

マイナスの面積:

 ****
 *  *
 **** 

結果の絶対値を取得して、座標の順序が間違っているという問題を回避します。領域は常に正です。

于 2012-11-05T11:41:01.197 に答える
0

ユーザーは、少なくとも次の 4 つの座標を入力する必要があると想定しています。

       C1 * * *
       *      *
       *      *
C2 * * *      * * * *
*                   *
*                   *
*  * * *      * * * C3
       *      *
       *      *
       * * * C4

同じことから、3 つの長方形の座標を計算できます。

       *  * * *
       *  1   *
       *      *
*  * * * **** * * * *
*         2         *
*                   *
*  * * * **** * * * *
       *  3   *
       *      *
       * * *  *

そして最後にクロスの領域。

于 2012-11-05T12:34:11.663 に答える
0
      a
     |--|
   c ****
  |--*  *
 -****  ****
b|*        *
 -****  ****
     *  *
     ****

 A = (a+b) * (2c+a) - a*b

したがって、実際には 4 つの座標を識別するだけで済みます。縦棒の左上と右上、横棒の左上と左下の座標。

左上縦:y_tlv=y_max, x_tlv = {x_min where y=y_max}
右上縦:y_trv=y_max, x_trv = {x_max where y=y_max}
左上横:y_tlh={y_max where x=x_min}, x_tlh=x_min
左下横:y_blh={y_min where x=x_min}, x_blh=x_min

a = abs(x_trv - x_tlv)
b = abs(y_tlh - y_blh)
c = abs(x_tlv - x_tlh)

必要な座標点を特定するためのアルゴリズムを理解するのはあなたに任せます。

于 2012-11-05T11:51:34.603 に答える
0

次のような単純な十字形を考えます。

    A---B
    |   |
 C--D   E--------F
 |    X  Y       |
 G--H   I--------J
    |   |
    K---L

上で指摘したように、3 つの四角形の面積を見つけて、図形全体の面積を計算できます... ABLK + CFJG - DEHI. これは、直角を持たない歪んだ十字でも機能します。

十字の重心を計算する方法は、X または Y のどちらかを実際に求めるかどうかによって異なります。Y を取得するには、まず十字の境界四角形を見つける必要があります。次に、その四角形の重心を簡単に見つけることができます。上に描いたように不均等な腕の長さを許可する場合、点 Y は十字自体の中に含まれる必要がないことを覚えておいてください。

重心 X を見つけるには、AB と KL の中点、および CG と FJ の中点を計算する必要があります。次に、これらの 2 つの線、AB-KL と CG-FJ の交点を見つけて、十字が規則的な形をしている限り、十字の内側にある交点 X を見つけることができます。

任意の十字形を許可する場合 (たとえば、十字形に直角がまったくない可能性があります)、点 X が形状内にあることを保証できるとは思いませんが、面倒です。これを何らかの形で証明してください。

形状の周囲の任意の点を見つけるのは簡単です。エッジ (たとえば、EF または KH) によってリンクされたコーナーのペアを選択し、2 つの間のベクトル上の点を選択するだけです。

于 2012-11-05T13:42:53.223 に答える