gpt4 book ai didi

python - 多边形类 : Finding area and length of Rectangle and Triangle

转载 作者:行者123 更新时间:2023-12-04 07:36:00 24 4
gpt4 key购买 nike

我得到了以下代码。

class Polygon:
'''Class to represent polygon objects.'''

def __init__(self, points):
'''Initialize a Polygon object with a list of points.'''

self.points = points

def length(self):
'''Return the length of the perimeter of the polygon.'''

P = self.points

return sum(sqrt((x1 - x0) ** 2 + (y1 - y0) ** 2)
for (x0, y0), (x1, y1) in zip(P, P[1:] + P[:1]))

def area(self):
'''Return the area of the polygon.'''

P = self.points
A = 0
for (x0, y0), (x1, y1) in zip(P, P[1:] + P[:1]):
A += x0 * y1 - y0 * x1
return abs(A / 2)
我必须实现 __init__两个子类的方法(没有其他方法); RectangleTriangle这样就可以通过以下方式创建矩形:
rectangle = Rectangle(width, height)
和一个三角形:
triangle = Triangle(a, b, c)
我已经对 Rectangle 进行了编码一个具有以下内容:
class Rectangle(Polygon):

def __init__(self, width, height):
self.width = width
self.height = height
self.points = [(0,0), (0, height), (width, height), (width, 0)]
当输入仅用于 Rectangle时,上述代码通过了所有测试.
但是,我在为 Triangle 做同样的事情时遇到了麻烦。 .输入应该是 a , bc其中那些是三角形的边长。我无法弄清楚使用哪些点来生成 Triangle 的长度和面积:
class Triangle(Polygon):

def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
self.points = ??
我已经尝试了使用边长的所有点组合,但是,没有一个通过测试。

最佳答案

看一下:
https://www.omnicalculator.com/math/triangle-height#how-to-find-the-height-of-a-triangle-formulas

h = 0.5 * ((a + b + c) * (-a + b + c) * (a - b + c) * (a + b - c))**0.5 / b
ac = (c**2 - h**2)**0.5
self.points = [
(0, 0),
(a, 0),
(ac, h),
]
enter image description here
通过获取 h然后应用毕达哥拉斯定理,您将获得“第三个”点的坐标。前两个是微不足道的:原点和沿其中一个轴的另一个点。
一个小问题:而不是设置 points直接打电话可能更干净 super().__init__(points) .

关于python - 多边形类 : Finding area and length of Rectangle and Triangle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67738437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com