[Tutor] Questions of Maths
János Juhász
janos.juhasz at VELUX.com
Wed Apr 18 22:42:36 CEST 2007
Hi Abu,
> Question: how to determine whether point C is to the left or to the
> right of the line AB?
When the line given by A(Xa,Ya) and B(Xb, Yb),
the area of the A-B-C triangle can be calculated with the value of next
determinant / 2
| Xa, Ya, 1 |
| Xb, Yb, 1 |
| Xc, Yc, 1 | / 2
So:
Area = ( Xa(Yb-Yc) - Xb(Ya-Yc) + Xc(Ya-Yb) ) / 2
Area > 0 | the points are clockwise (C is on the left)
Area < 0 | the points are counterclockwise (C is on the right)
Area = 0 | the points are on the same line
It can be written in a python function
###########
def TriArea(a, b, c):
#Area = (Xa(Yb-Yc) - Xb(Ya-Yc) + Xc(Ya-Yb)) /2
return ( a[0] * (b[1]-c[1]) - b[0] * (a[1]-c[1]) + c[0] * (a[1]-b[1])
)/2
###########
# to test it.
print TriArea((0,0), (10,0), (2,2))
print TriArea((0,0), (10,0), (2,-2))
print TriArea((0,0), (10,0), (2,0))
###########
The biggest advantage of this calculation is that,
it never goes to zero division exception.
Best regards,
Janos
More information about the Tutor
mailing list