我昨天晚上想到了,我在这个2018版教材里做过一个题,这个题是判断点在线上还是在线的左右。
这给我了我启发。早上上班打开了第4刷时自己做的题,发现了,和这个一样的写法。我上次竟然就是判断点在线的左右来计算点在三角形内还是三角形外。
4.27 x and y coordinates
pX, pY = eval(input("Enter a point's x- and y-coordinates: "))
aX, aY = 0, 0
bX, bY = 200, 0 cX, cY = 0, 100
# 判断三角形的方向
traSign = (bX - aX) * (cY - aY) - (bY - aY) *(cX - aX)
print(traSign)
# 判断p点和三条线的三个关系
abSide = (bX - aX) * (pY - aY) - (bY - aY) * (pX - aX)
caSide = (aX - cX) * (pY - cY) - (aY - cY) * (pX - cX)
bcSide = (cX - bX) * (pY - cY) - (cY - bY) * (pX - cX)
if (abSide * traSign >0) and (caSide * traSign > 0) and (bcSide * traSign > 0):
print(f"The point is in the triangle")
else:
print(f"The point is not in the triangle")
# 这是上次编写的内容。确实比昨天的海内法等要简单一些。但是这个判定公式,也存在着问题。
4.31 判断点在线左右还是线上
这个题我也是用该公式,但是发生了和答案完全不符的结果。为此我还在继续的寻找。