Thuật toán tìm trọng tâm của tứ giác

Vấn đề là đây là một bài code chứ không phải bài toán hình =) và ct GA + GB + GC + … = (vt) 0 là sai :slight_smile:

1 Like

Đâu phải là hình bình hành đâu

Đường trung bình trong tam giác đó bạn (Hai đường trung bình của 2 tam giác có đáy chung)

Giải thuật ra rồi thì code mấy hồi bạn.:grinning:

Hay là mình tạo một topic có tiêu đề thế này : Nhập bốn điểm bằng con chuột lên màn hình Brower, Vẽ hình tứ giác và trọng tâm của nó" anh em làm chơi nhé?

Chương trình Calc III :smiley: (VN là môn giải tích 2) http://tutorial.math.lamar.edu/Classes/CalcIII/LineIntegralsIntro.aspx

1 Like

Quái thiệt @@ công thức tính thì mình có viết ở trên, nó đơn giản chứ có j đâu phức tạp, chưa kể có link, bàn luận chứng minh chi tùm lum @@ mà nhìn lại nó chỉ là công thức để tính chứ cũng chả phải thuật toán gì ghê gớm @@

Vậy bạn chứng minh xem sao. Toán không có nói trống không vậy được, mà sao chúng tôi phải tin bạn?

[spoiler]Bởi vì có hai ba người đang dùng GA + GB + GC + GD, nhưng đó là một sự tổng quát hóa sai lầm.[/spoiler]

2 Likes

đây là công thức tính trọng tâm của một mặt cắt ngang hình học bất kỳ, ở đây trường hợp cụ thể là tứ giác nên đơn giản hơn rất nhiều, đây là 1 nội dung nhỏ trong phần tính momen quán tính của bộ môn sức bền vật liệu của ngành xây dựng, vì trước đây mình học xây dựng nên biết công thức này, còn muốn chứng minh bạn tìm tài liệu sức bền để xem, bạn có thể xem lại công thức ở slide 23/41 https://www.slideshare.net/lntgiang16/chng-4-c-trng-hnh-hc-ca-mt-ct-ngang

1 Like

À nó ntn (sorry :smiley: ): chia 1 hình S đc bao bởi đường cong kín C bằng đường cong cắt C tại đúng hai điểm, tạo thành hai hình A và B. Ct gốc là:
xS = (S(A)xA + S(B)xB) / (S(A) + S(B))
= (S_A(xdA) / S_A(dA) * S_A(dA) + S_B(xdA) / S_B(dA) * S_B(dA)) / S(S) (công thức)
= (S_A(xdA) + S_B(xdA)) / S(S) (do hình S gồm hình A và B)
= S_S(xdA) / S(S) :slight_smile: (như trên)

Nếu cắt nhau tại 3, 4, … điểm thì ta chia thành 3, 4, … phần.

Quay lại tứ giác ABCD ta tính S(ABD) = 1/2*|xAyB + xByD + xDyA - xByA - xDyB - xAyD| và tương tự cho S(ACD).

1 Like

công thức thì đơn giản rồi, chủ yếu là giải quyết thì bài toán thớt đưa ra. Mình có nói ở trên rồi, tuy nhiên nếu mở rộng bài toán tìm trọng tâm cho một đa giác có n đỉnh bất kỳ thì sẽ rất hay và không dễ để giải tổng quát trong lập trình.

Cái khó là tính con tích phân S(x dA) và S(y dA) ấy. Để tính trong trường hợp tổng quát thì ta tham số hóa đường cong kín C và dùng Green để đổi nó qua S_C(x(t)dy) và S_C(y(t)dx). Thu được ct thì sẽ viết code dựa trên đó luôn.

mấy hình lập phương có trọng tâm ko nhỉ ? hay chỉ có mấy hình 2D mới có trọng tâm ?

Có bảng công thức cho hình đồng chất và có độ dày đồng nhất đó bạn :slight_smile:

1 Like

không nhất thiết phải tính tích phân này, với đa giác n đỉnh thì có n - 2 tam giác, ta biết được tọa độ của n đỉnh, dễ dàng tính được trọng tâm và diện tích của n - 2 tam giác này, từ đó ráp công thức tính ra thôi.

Một vật thể bất kỳ đều có trọng tâm.
Mình không tưởng tượng được 4D, nhưng 0D, 1D, 2D, 3D vật thể luôn có.

1 Like

Vậy thì ngay chỗ đa giác lõm vào thì làm ntn bạn?

chỗ đa giác lõm thì diện tích 1 tam giác sẽ là âm, bù trừ được, vẫn đúng, chừng nào các cạnh cắt nhau thì mới có vấn đề @_@

ví dụ vẽ cái hình này. ABCDEF là lục giác, thứ tự các đỉnh thuận chiều kim đồng hồ
chia ra làm 4 tam giác: ABC, ACD, ADE, AEF
tam giác ABC thuận chiều kim đồng hồ nên diện tích cùng dấu với ABCDEF
tam giác ACD thuận chiều kim đồng hồ nên diện tích cùng dấu với ABCDEF
tam giác ADE ngược chiều kim đồng hồ nên diện tích khác dấu với ABCDEF
tam giác AEF thuận chiều kim đồng hồ nên diện tích cùng dấu với ABCDEF

tổng diện tích 4 tam giác này vẫn bằng với diện tích ABCDEF @@ Vì: tam giác ADE được chia làm 2 mảnh: mảnh ngoài và mảnh trong. Mảnh ngoài và trong được cộng 1 lần vì ACD cùng dấu, trừ 1 lần vì ADE ngược dấu, và mảnh trong được cộng 1 lần nữa nhờ AEF cùng dấu. Vậy mảnh trong được cộng 1 - 1 + 1 = 1 lần, mảnh ngoài được cộng 1 - 1 = 0 lần. Vẫn đúng @@

1 Like

Anh HK boy giải thích luôn làm sao cái VP khác 0 với à?

(G1, G, G4), (G2, G, G3) là 2 bộ 3 thẳng hàng.

->

->

Mà góc giữa GG1 và GG2 không phải lúc nào cũng bằng 0 -> tổng trên không bằng 0 trong mọi trường hợp.


Nói chung là cách coi trọng tâm là điểm để tổng 4 vector = 0 là sai. Về mặt vật lý là sai.

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