python中涉及类型更改的OOP问题的优雅解决方案

python中涉及类型更改的OOP问题的优雅解决方案,python,oop,rotation,Python,Oop,Rotation,我在用python编写代码时遇到了OOP问题,我不知道如何在优雅的解决方案中解决这个问题。我有一个类,它表示基于m和b参数的直线方程(y=mx+b),称为line。垂直线具有无限斜率,并且具有等式x=c,因此还有另一个类VerticalLine,它只需要c参数。请注意,我无法拥有由xy平面中的两点表示的直线类,如果这是一个解决方案,我确实会使用它 我希望能够旋转这些线。将水平线旋转pi/2+k*pi(k整数)将产生垂直线,反之亦然。因此,一个普通的行必须以某种方式转换成一个垂直行,这在pytho

我在用python编写代码时遇到了OOP问题,我不知道如何在优雅的解决方案中解决这个问题。我有一个类,它表示基于
m
b
参数的直线方程(
y=mx+b
),称为
line
。垂直线具有无限斜率,并且具有等式
x=c
,因此还有另一个类
VerticalLine
,它只需要
c
参数。请注意,我无法拥有由xy平面中的两点表示的
直线
类,如果这是一个解决方案,我确实会使用它

我希望能够旋转这些线。将水平线旋转
pi/2+k*pi
k
整数)将产生垂直线,反之亦然。因此,一个普通的
必须以某种方式转换成一个
垂直行
,这在python中是不可能的(不是不可能的,而是难以置信的不可靠)。如何更好地构建程序以解决此问题


请注意,程序中的其他几何对象都有一个旋转方法,并且它们已经被频繁使用,因此如果可以的话,我希望直线旋转方法也可以使用。事实上,如果直线旋转方法可以返回一个新的旋转的
直线
垂直线
对象,这将是一个很小的问题。

具有固定边界/端点的几何对象可以在适当的位置平移和旋转。但是对于一条线,除非你谈论的是一条从点a到点B的固定长度的线,否则你看到的是两个端点,要么在
无穷大
,要么在
-无穷大
y=mx+c
)。使用
infinity
-infinity
进行除法不是简单的数学运算,因此我认为会使旋转和平移算法复杂化