Tính diện tích tam giác biết tọa độ 3 điểm (1 người xem)

  • Thread starter Thread starter OverAC
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

OverAC

Đỗ Nguyên Bình
Thành viên BQT
Administrator
Tham gia
30/5/06
Bài viết
2,695
Được thích
15,103
Chào mọi người,

Hôm nay có việc cần tính diện tích tam giác biết 3 điểm, nhưng bổng dưng bị bí không biết làm thế nào để có được trường hợp tổng quát nhất, nhờ mọi người giúp vậy.

Thân cảm ơn.
OverAC
 

File đính kèm

Chào mọi người,

Hôm nay có việc cần tính diện tích tam giác biết 3 điểm, nhưng bổng dưng bị bí không biết làm thế nào để có được trường hợp tổng quát nhất, nhờ mọi người giúp vậy.

Thân cảm ơn.
OverAC
Hàm vầy:
PHP:
Function TriArea(ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, _
                 ByVal y1 As Double, ByVal y2 As Double, ByVal y3 As Double) As Double
  Dim dA As Double, dB As Double, dC As Double, dP As Double
  dA = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)
  dB = Sqr((x3 - x2) ^ 2 + (y3 - y2) ^ 2)
  dC = Sqr((x1 - x3) ^ 2 + (y1 - y3) ^ 2)
  dP = (dA + dB + dC) / 2
  TriArea = Sqr(dP * (dP - dA) * (dP - dB) * (dP - dC))
End Function
Muốn tính bằng công thức cũng được (cứ theo cách tính trong hàm mà làm)
 
Chào mọi người,

Hôm nay có việc cần tính diện tích tam giác biết 3 điểm, nhưng bổng dưng bị bí không biết làm thế nào để có được trường hợp tổng quát nhất, nhờ mọi người giúp vậy.

Thân cảm ơn.
OverAC
Sử dụng công thức Héron để tính: Nó như vầy:
Mã:
S=SQRT(p*(p-a)*(p-b)*(p-c))
Trong đó, p là nửa chu vi của tam giác; a, b, c là độ dài 3 cạnh.
 

File đính kèm

Cảm ơn anh Tuấn,

Anh có bộ hàm nào liên quan tới những chuyện tương tự như:
- Tính tọa độ giao điểm giữa đường cao xuống cạnh
- Xác định 3 điểm thằng hàng
- Tính diện tích tứ giác biết bốn điểm (kể cả trường hợp tứ giác lõm)
...
Nếu có, anh gởi giúp em sẽ tập hợp lại một phen.

Cảm ơn anh.
 
Lần chỉnh sửa cuối:
Cảm ơn anh Tuấn,

Anh có bộ hàm nào liên quan tới những chuyện tương tự như:
- Tính tọa độ giao điểm giữa đường cao xuống cạnh
- Xác định 3 điểm thằng hàng
- Tính diện tích tứ giác biết bốn điểm (kể cả trường hợp tứ giác lõm)
...
Nếu có em anh gởi giúp em sẽ tập hợp lại một phen.

Cảm ơn anh.
Ái chà, mấy cái này lại phải "ôn" lại giải tích thôi (ai mà nhớ)
1> Câu 1: Đại khái hoàn toàn có thể xác định được phương trình đường thẳng đi qua 1 điểm cho trước và vuông góc với đường thẳng cho trước ---> Suy ra có thể xác định giao điểm của 2 đường thẳng
2> Câu 2: Không hiểu
3> Câu 3: Diện tích tứ giác = 2 diện tích tam giác cộng lại. Có điều nếu tính tổng quát thì hơi khó khi gặp phải tứ giác lõm (ai biết phải chia ra thành 2 tam giác theo kiểu nào)
-------------------
Nói chung là: Để nghiên cứu lại xem mới có thể viết ra được hàm tổng quát (câu 1 khả thi nhất)
 
Yêu cầu bài toán là kiểm tra xem 3 điểm A, B, C có thẳng hàng với nhau không.
Cách giải như vầy:
Badiemthanghang.png

Từ đó suy ra điều kiện để A, B, C thẳng hàng là:
Mã:
=OR(AND(x[SUB]A[/SUB]=x[SUB]B[/SUB],x[SUB]A[/SUB]=x[SUB]C[/SUB]),AND(y[SUB]A[/SUB]=y[SUB]B[/SUB],y[SUB]A[/SUB]=y[SUB]C[/SUB]),(x[SUB]C[/SUB]-x[SUB]A[/SUB])/(x[SUB]B[/SUB]-x[SUB]A[/SUB])=(y[SUB]C[/SUB]-y[SUB]A[/SUB])/(y[SUB]B[/SUB]-y[SUB]A[/SUB]))
 
thanks bài viết tính dt

cảm ơn bài viết tính diện tích.vì lâu wa nên quên
 
Yêu cầu bài toán là kiểm tra xem 3 điểm A, B, C có thẳng hàng với nhau không.
Cách giải như vầy:
Badiemthanghang.png

Từ đó suy ra điều kiện để A, B, C thẳng hàng là:
Mã:
=OR(AND(x[SUB]A[/SUB]=x[SUB]B[/SUB],x[SUB]A[/SUB]=x[SUB]C[/SUB]),AND(y[SUB]A[/SUB]=y[SUB]B[/SUB],y[SUB]A[/SUB]=y[SUB]C[/SUB]),(x[SUB]C[/SUB]-x[SUB]A[/SUB])/(x[SUB]B[/SUB]-x[SUB]A[/SUB])=(y[SUB]C[/SUB]-y[SUB]A[/SUB])/(y[SUB]B[/SUB]-y[SUB]A[/SUB]))

2 vế không tương đương. Ta lấy ví dụ:
A = (1;2), B = (1;3), C = (2;4)
Rõ ràng 3 điểm trên không thẳng hàng.
1. VT.
Không tồn tại k thỏa cả 2 pt (nếu k thỏa pt 1 thì k = 0 nên từ pt 2 => y(B) = y(A) - mâu thuẫn với dữ kiên cho trước) => 3 điểm trên không thẳng hàng
2. VP.
Rõ ràng x(A), x(B), x(C), y(A), y(B), y(C) không thỏa 2 pt đầu. Không thỏa pt 3 vì ta có chia cho 0.
Tóm lại với 3 điểm không thẳng hàng cho trước thì VT không có lỗi trong khi VP có lỗi chia cho 0 nên không thể tương đương.

Công thức nếu nhập vào sheet thì đúng là trả về #DIV/0!
------------
Thường thì để xét 3 điểm có thẳng hàng hay không thì dễ nhất là dùng định thức.
Ta xét ma trận vuông X:
xA yA 1
xB yB 1
xC yC 1

1. det(A, B, C) = det(X) > 0 => điểm C nằm bên trái vécto AB
2. det(A, B, C) = det(X) = 0 => A, B, C thẳng hàng
3. det(A, B, C) = det(X) < 0 => điểm C nằm bên phải véctơ AB

Công thức tính det(X) thì dễ rồi.
-----------
Từ trên ta có điều kiện xét xem tứ giác là lồi hay không:

TuGiacLoi = (det(A, B, C)*det(A, B, D) > 0) AND _
(det(C, D, A)*det(C, D, B) > 0) AND (det(A, B, C)*det(C, D, A) > 0)
 
Web KT

Bài viết mới nhất

Back
Top Bottom