如何判断点是否在仅知两对角顶点的矩形内?(代码问题)
矩形内点判断问题调试求助
问题背景
我正在解决一个作业问题:需要判断给定的点是否位于仅已知两个对角顶点的矩形内(包含边)。要求编写isIn()函数,接受三个坐标参数,当点在矩形内时返回布尔值True,否则返回False;矩形的边与坐标轴平行,且两个对角顶点的顺序不固定。
我的思路与遇到的问题
我打算通过判断矩形面积是否等于测试点与矩形四个顶点构成的四个三角形面积之和来实现逻辑,但目前代码运行后,计算出的三角形面积出现负数,推测是数学计算环节出了问题。希望得到调试提示,不要直接给出答案。
我的代码
import numpy as np def isIn(firstCorner=(0,0), secondCorner=(0,0), point=(0,0)): # YOUR CODE HERE points_dic={"firstCorner":firstCorner,"secondCorner":secondCorner} points =list((points_dic.values())) if points[0] >= points[1]: points=[points[1],points[0]] print('switch') firstCorner = points[0] secondCorner = points[1] x1=(firstCorner[0]) y1=(firstCorner[1]) x3=(secondCorner[0]) y3=(secondCorner[1]) x2=x1 y2=y3 x4=x3 y4=y1 px=(point[0]) py=(point[1]) ta1 = .5*(x1*(y2-py)+x2*(py-y1)+px*(y1-y2)) ta2 = .5*(x2*(y3-py)+x3*(py-y2)+px*(y2-y3)) ta3 = .5*(x3*(y4-py)+x4*(py-y3)+px*(y3-y4)) ta4 = .5*(x4*(y1-py)+x1*(py-y4)+px*(y4-y1)) ra = (x1-x3)*(y1-y3) rac = (ta1+ta2+ta3+ta4) print("Rectangle Area is =",ra,"\nTraiangles added =",rac) print(ta1,ta2,ta3,ta4) def main(): print(isIn((1,2), (3,4), (1.5, 3.2))) main()
运行输出
Rectangle Area is = 4 Traiangles added = -4.0 -0.5 -0.7999999999999998 -1.5 -1.2000000000000002 None
内容的提问来源于stack exchange,提问作者Curran Chambers
相关产品推荐
相关产品推荐

