Thuật toán dựng hình bình hành

Đề bài
Yêu cầu: Cho 3 điểm A, B, C. In ra điểm D sao cho ABCD là hình bình hành.

Dữ liệu: Một dòng ghi 6 số nguyên xa, ya, xb, yb, xc, yc là tọa độ của A, B, C.

Kết quả: Ghi ra hai số nguyên là tọa độ điểm D.

Cho em xin thuật toán bài này được không ạ, em nghĩ mãi không ra ạ!
Em cảm ơn ạ!

Không biết là anh học vector chưa nhỉ. Vector lớp 10 ấy. Dựa vào đó có lẽ là tìm được toạ độ của D.

1 Like

Em mới lớp 9 thôi anh!

có có biết làm bằng tay không? có viết được công thức toán học để tính ra tọa độ điểm thứ tư không
riết rồi các thanh niên học code gì cũng xin thuật toán trong khi chả biết thuật toán là gì

7 Likes

Vậy bạn đã học về cách tính khoảng cách rồi nhỉ?

  • Vậy thử tìm đường thẳng delta song song với đường thằng AB đi qua C. Cái này chắc làm được đúng không?
  • Sau đó tính độ dài của AB. Vẫn làm được nhỉ :thinking:,

Gợi ý thế thôi tự nghĩ tiếp xem nào. Chú ý kiểm tra A, B, C có thẳng hàng không. Kiến thức hết lớp 8 thì chắc đủ kiến thức để làm rồi. Toán làm thế nào để ra thì ốp gần hết vào code. Nghĩ kĩ đi không ra thì hỏi tiếp. Trước khi hỏi lại nhớ nêu xem đã nghĩ được gì rồi.

4 Likes

Không biết là các đỉnh có theo thứ tự ABCD ko nhỉ, nếu có thì nhanh thôi, còn ko thì hơi bị loằng nhoằng.

3 Likes

Theo thứ tự A,B,C anh ạ, nhưng không biết thiếu điểm ở góc nào.

Gợi ý: Hình bình hành là hình tứ giác có hai cạnh đối song song và bằng nhau, hãy vẽ thêm điểm D sao cho AB ∥ CD và AB = CD.

Gợi ý 2: @rogp10 đã có nói.

P/s: Làm sao để viết mấy cái kí tự toán học vậy :thinking: ?

3 Likes

Trong hệ tọa độ nhận BC là trục hoành ( :smiley: ) AB \parallel CD \Leftrightarrow k_{BA} = k_{CD}. Hệ số k còn có ý nghĩa là 1 bước trên trục tung là k bước trên trục hoành.

5 Likes

Để cho dễ hiểu, em vẽ một trục tọa độ Oxy ra , rồi vẽ một hình bình hành ABCD có tọa độ bất kỳ, em hãy xem Xa - Xb có bằng Xd - Xc hay không?

3 Likes

Mũ thì dùng tag <sup>
Chỉ số thì dùng tag <sub> :smiley:
Dấu thì ta dùng HTML entities (hay copy vào cũng được).

Nhưng mà để viết phân số, phân thức, rút căn thì chỉ có MathTex (giữa hai dấu $)

5 Likes

Với kiến cơ bản về hệ tọa độ Oxy và hình bình hành, có thể dễ dàng giải bài như trên
trên thực tế, nếu ABC là một tam giác, thì có thể tìm được A’, B’, C’ là 3 điểm có thể tạo thành một hình bình hành (với các đương chéo là AA’ hoặc BB’ hoặc CC’)
Giả sử chọn A’

  • gọi trung điểm BC là X cũng là giao 2 đường chéo => tọa độ của X
  • như vậy AX = XA’ và A X A’ thẳng hàng, suy ra tọa độ A’

bạn đã biết mình cần làm gì với 6 con số được cho chưa?

qua các comment của bạn thì có vẻ như bạn chưa làm gì cả, thậm chí là ngồi vẽ đại 3 cái tam giác nhọn/vuông/tù coi có chuyện gì đặc biệt hay không bạn cũng không làm.

lập trình là mô tả những lệnh mà con người muốn máy tính thực hiện bằng ngôn ngữ lập trình
có vẻ như bạn mong đợi những comment “giúp đỡ thiết thực” hơn nên mình chịu vậy!

7 Likes

gọi D là điểm cần tìm
ta có:
AB = DC; AD = BC (tính chất hình bình hành: 2 cạnh đối = bằng nhau)
suy ra
k_{AB} = k_{DC}; k_{AD} = k_{BC} (tính chất hình bình hành: 2 cạnh đối // với nhau)
(với k là hệ số góc)

giờ bắt đầu lái qua tiếp:

bây giờ ta có phương trình đường tròn bán kính R có tâm là I(x_0; y_0)
(x - x_0)^2 + (y - y_0)^2 = R^2 (1)
vì sao lại là phương trình đường tròn? vì ta sẽ lợi dụng khoảng cách từ (x; y) đến (x_0; y_0) cũng chính bằng cái bán kính nốt :)))

(biết lớp 9 nên cho hẳn cái link xem rồi đấy, vì cái đó học ở HK2 năm lớp 10 - gần cuối năm)

và hệ số góc của đường thẳng đi qua (x; y)(x_0; y_0) bằng
\displaystyle k = \frac{y - y_0}{x - x_0}

do đó phương trình đi qua 2 điểm này sẽ là
y = k*(x - x_0) + y_0
\iff y - y_0 = k*(x - x_0) (2)

lấy (2) thế vào (1) ta có:
(x - x_0)^2 + k^2*(x - x_0)^2 = R^2
và kết hợp với:
y = k*(x - x_0) + y_0

nhiêu đấy là đủ giúp bạn rồi nhỉ?

7 Likes

Trong HBH thì 2 đường chéo luôn cắt nhau tại trung điểm.
Có 3 điểm sẽ tạo ra 3 đường chéo và tìm được trung điểm 3 đường chéo đó.
Từ điểm còn lại lấy đối xứng qua trung điểm sẽ tìm được 3 điểm D.

4 Likes

D = C - B + A là xong rồi :V :V :V

https://www.desmos.com/calculator/nbvn8t7k5c

điểm D hay vector OD = điểm A hay vector OA + vector AD
\overrightarrow{OD} = \overrightarrow{OA} + \overrightarrow{AD}
mà ABCD là hình bình hành nên \overrightarrow{AD} chính là \overrightarrow{BC}
vậy \overrightarrow{OD} = \overrightarrow{OA} + \overrightarrow{BC}
hay D = A + (C - B)

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?