01/10/2018, 12:17

Xác định một điểm có nằm trong hình vuông hay không

Chào mọi người! Em đang có một bài tập về code c++ nhưng đang mắc kẹt ở thuật toán, vẩn chưa nghĩ ra thuật toán để giải.
Đề là cho tọa độ hai điểm A(Xa,Ya), B(Xb,Yb) là hai đỉnh đối nhau của hình vuông. Nhập vào một điểm bất kì! Xác định điểm đó có nằm trong hình vuông hay không kể cả viền. Tọa độ 2 điểm A, B là cho sẵn ạ!
Mong mọi người giúp đỡ! Em xin cám ơn nhiều!!!

HK boy viết 14:23 ngày 01/10/2018

Dùng nhiều dấu ! quá, đa số là không hợp văn cảnh.

Bạn dùng công thức diện tích.

S nằm trong ABCD <-> S(SAB) + S(SBC) + S(SCD) + S(DCA) = S(ABCD) với S(SAB) là diện tích của hình tạo bởi các điểm S, A, B.

Hung viết 14:32 ngày 01/10/2018

Điểm M nằm trong đoạn thẳng AB khi và chỉ khi:

  • vector AM = alpha * vector AB, 0 <= alpha <= 1
  • hay, 0 <= ( vector AM / vector AB ) <= 1

Trở lại đề bài hình vuông:

  • Chiếu điểm A, B, M xuống trục Ox, được Ax = (xA, 0), Bx = (xB, 0), Mx = (xM, 0).
  • Kiểm tra điểm Mx có nằm trong đoạn thẳng AxBx, hay 0 <= (xM - xA) / (xB - xA) <= 1 (1)
  • Tương tự chiếu trên trục Oy, được công thức 0 <= (yM - yA) / (yB - yA) <= 1 (2)
  • Nếu thoả cả (1) và (2) thì M nằm trong hình vuông

Về code thì chỉ cần 1 lệnh if lấy tất cả điều kiện rồi AND (&&).

Pice Once viết 14:32 ngày 01/10/2018

Minh cám ơn bạn nhiều!!!

Pice Once viết 14:23 ngày 01/10/2018

Mình cám ơn bạn nhiều!

Bài liên quan
0