2016-04-27 7 views
1

私は学校の割り当てを持っています。これは、ある点(x、y)が、例えば正方形と言う。正方形と十字の内外の(x、y)を求めるアルゴリズム

Class Square 
private: 
    int coordX[4]; 
    int coordY[4]; 

クロス12点しかし、

Class Cross 
private: 
    int coordX[12]; 
    int coordY[12]; 

これらは正方形の属性であるています。だから正方形の座標が(1,1)(1,4)(4,1)(4,4)であるとすると、ポイント(2,2)が正方形の中にあるかどうかを調べるにはどうすればよいですか?

この関数は、チェックしたい点である2つの整数を取ります。trueまたはfalseを返します。

bool isPointOnShape (int, int); 

ポイントが形状の周囲にあるかどうかをチェックする機能と同じです。

これらの2つの関数の計算方法を把握するアルゴリズムは何ですか?

+0

なぜ正方形には8点が関連付けられていますが、十字の意味は何ですか? –

+0

xの4点とyの4点ですので、実際にはxとy tgtのx、yの4点を考慮してください。十字架は医療センターのサインのようなものですか? – user6235245

答えて

0
class Square { 
private: 
    int coordX[4]; 
    int coordY[4]; 
    int xMin, xMax, yMin, yMax; 

public: 
    Square(); 
    bool is_point_on_shape (int, int); 
}; 

Square::Square(int coordXIn[], int coordYIn[]) 
{ 
    coordX = coordXIn; 
    coordY = coordYIn; 

    // determine extreme x and y values, which define the box 
    xMin = coordX[0]; 
    xMax = coordX[0]; 
    yMin = coordY[0]; 
    yMax = coordY[0]; 

    for (int i=1; i < 4; ++i) 
    { 
     if (coordX[i] < xMin) 
     { 
      xMin = coordX[i]; 
     } 

     if (coordX[i] > xMax) 
     { 
      xMax = coordX[i]; 
     } 
     if (coordY[i] < YMin) 
     { 
      yMin = coordY[i]; 
     } 

     if (coordY[i] > yMax) 
     { 
      yMax = coordY[i]; 
     } 
    } 
} 

// since we have the range of x and y values, checking to see if a point be 
// inside the square just means checking that this point lies within the range 
bool Square::is_point_on_shape (int x, int y) 
{ 
    if (xMin + x > xMax) return false; 
    if (yMin + y > yMax) return false; 

    return true; 
} 
+0

こんにちは、答えはありがたいですが、十字架のためにどうすればいいと思いますか? – user6235245

+0

あなたはあなたの質問に十字架が何であるか教えられませんでした。 –

+0

十字架には医師のサインのような12ポイントがかなりあります – user6235245

関連する問題