省略号

class sympy.geometry.ellipse.Ellipse(
center=None,
hradius=None,
vradius=None,
eccentricity=None,
**kwargs,
)[源代码][源代码]

一个椭圆形的 GeometryEntity。

参数:
中心点,可选

默认值是 Point(0, 0)

hradius数字或 SymPy 表达式,可选
vradius数字或 SymPy 表达式,可选
离心率数字或 SymPy 表达式,可选

创建一个椭圆需要提供 \(hradius\)\(vradius\)\(eccentricity\) 中的两个。第三个参数由提供的两个参数推导得出。

属性:
center

椭圆的中心。

hradius

椭圆的水平半径。

vradius

椭圆的垂直半径。

area

椭圆的面积。

circumference

椭圆的周长。

eccentricity

椭圆的偏心率。

periapsis

椭圆的近地点。

apoapsis

椭圆的远地点。

focus_distance

椭圆的焦距。

foci

椭圆的焦点。

方法

arbitrary_point([parameter])

椭圆上的一个参数化点。

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

atoms(*types)

返回构成当前对象的原子。

auxiliary_circle()

返回一个直径为椭圆长轴的圆。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

complement(universe)

相对于给定全集的 'self' 的补集。

contains(other)

返回一个 SymPy 值,指示 other 是否包含在 self 中:如果包含则返回 true,如果不包含则返回 false,否则返回一个未求值的 Contains 表达式(或者,在 ConditionSet 和 FiniteSet/Intervals 的并集的情况下,返回一个表示包含条件的表达式)。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

director_circle()

返回一个由椭圆上所有点组成的圆,这些点是两条垂直切线的交点。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

encloses(o)

如果 o 在 self 的边界内(不在边界上或外部),则返回 True。

encloses_point(p)

如果 p 被 self 包围(即在 self 内部),则返回 True。

equation([x, y, _slope])

返回与x轴和y轴对齐的椭圆方程;当给定斜率时,返回的方程对应于长轴具有该斜率的椭圆。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

evolute([x, y])

椭圆的渐屈方程。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

intersect(other)

返回 'self' 和 'other' 的交集。

intersection(o)

这个椭圆与另一个几何实体 \(o\) 的交点。

is_disjoint(other)

如果 selfother 不相交,则返回 True。

is_proper_subset(other)

如果 selfother 的真子集,则返回 True。

is_proper_superset(other)

如果 selfother 的真超集,则返回 True。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

is_similar(other)

这个几何实体与另一个几何实体相似吗?

is_subset(other)

如果 selfother 的子集,则返回 True。

is_superset(other)

如果 selfother 的超集,则返回 True。

is_tangent(o)

\(o\) 是椭圆的切线吗?

isdisjoint(other)

别名 is_disjoint()

issubset(other)

别名为 is_subset()

issuperset(other)

别名 is_superset()

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal_lines(p[, prec])

\(p\) 和椭圆之间的普通行。

parameter_value(other, t)

返回与给定点对应的参数。

plot_interval([parameter])

椭圆默认几何图形的绘图间隔。

polar_second_moment_of_area()

返回椭圆的极惯性矩

powerset()

找到 self 的幂集。

random_point([seed])

椭圆上的一个随机点。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

reflect(line)

覆盖 GeometryEntity.reflect,因为半径不是一个 GeometryEntity。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

rotate([angle, pt])

围绕点 pt 逆时针旋转 angle 弧度。

scale([x, y, pt])

覆盖 GeometryEntity.scale 方法,因为需要缩放的是主轴和次轴,而它们不是 GeometryEntities。

second_moment_of_area([point])

返回椭圆的二阶矩和积矩面积。

section_modulus([point])

返回一个包含椭圆截面模量的元组

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

symmetric_difference(other)

返回 selfother 的对称差集。

tangent_lines(p)

\(p\) 和椭圆之间的切线。

translate([x, y])

通过将 x 和 y 值添加到 x,y 坐标来移动对象。

union(other)

返回 selfother 的并集。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

等于

is_hypergeometric

Raises:
GeometryError

\(hradius\)\(vradius\)\(eccentricity\) 作为参数错误地提供时。

类型错误

\(center\) 不是一个 Point 时。

参见

Circle

注释

由一个中心和两个半径构成,第一个是水平半径(沿x轴),第二个是垂直半径(沿y轴)。

当使用 hradius 和 vradius 的符号值时,任何涉及焦点或长轴或短轴的计算都将假设椭圆的长轴在 x 轴上。如果情况并非如此,则需要手动旋转。

示例

>>> from sympy import Ellipse, Point, Rational
>>> e1 = Ellipse(Point(0, 0), 5, 1)
>>> e1.hradius, e1.vradius
(5, 1)
>>> e2 = Ellipse(Point(3, 1), hradius=3, eccentricity=Rational(4, 5))
>>> e2
Ellipse(Point2D(3, 1), 3, 9/5)
property apoapsis

椭圆的远地点。

焦点与轮廓之间的最大距离。

返回:
远地点数字

参见

periapsis

返回焦点与轮廓之间的最短距离

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.apoapsis
2*sqrt(2) + 3
arbitrary_point(parameter='t')[源代码][源代码]

椭圆上的一个参数化点。

参数:
参数str, 可选

默认值是 ‘t’。

返回:
任意点
Raises:
ValueError

\(参数\) 已经出现在函数中时。

示例

>>> from sympy import Point, Ellipse
>>> e1 = Ellipse(Point(0, 0), 3, 2)
>>> e1.arbitrary_point()
Point2D(3*cos(t), 2*sin(t))
property area

椭圆的面积。

返回:
区域数字

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.area
3*pi
auxiliary_circle()[源代码][源代码]

返回一个直径为椭圆长轴的圆。

示例

>>> from sympy import Ellipse, Point, symbols
>>> c = Point(1, 2)
>>> Ellipse(c, 8, 7).auxiliary_circle()
Circle(Point2D(1, 2), 8)
>>> a, b = symbols('a b')
>>> Ellipse(c, a, b).auxiliary_circle()
Circle(Point2D(1, 2), Max(a, b))
property bounds

返回一个元组 (xmin, ymin, xmax, ymax),表示几何图形的边界矩形。

property center

椭圆的中心。

返回:
中心数字

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.center
Point2D(0, 0)
property circumference

椭圆的周长。

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.circumference
12*elliptic_e(8/9)
director_circle()[源代码][源代码]

返回一个由椭圆上所有点组成的圆,这些点是两条垂直切线的交点。

返回:

一个作为几何对象返回的圆。

参考文献

示例

>>> from sympy import Ellipse, Point, symbols
>>> c = Point(3,8)
>>> Ellipse(c, 7, 9).director_circle()
Circle(Point2D(3, 8), sqrt(130))
>>> a, b = symbols('a b')
>>> Ellipse(c, a, b).director_circle()
Circle(Point2D(3, 8), sqrt(a**2 + b**2))
property eccentricity

椭圆的偏心率。

返回:
离心率数字

示例

>>> from sympy import Point, Ellipse, sqrt
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, sqrt(2))
>>> e1.eccentricity
sqrt(7)/3
encloses_point(p)[源代码][源代码]

如果 p 被 self 包围(即在 self 内部),则返回 True。

参数:
p
返回:
encloses_pointTrue, False 或 None

注释

处于自我边界的被认为是假的。

示例

>>> from sympy import Ellipse, S
>>> from sympy.abc import t
>>> e = Ellipse((0, 0), 3, 2)
>>> e.encloses_point((0, 0))
True
>>> e.encloses_point(e.arbitrary_point(t).subs(t, S.Half))
False
>>> e.encloses_point((4, 0))
False
equation(x='x', y='y', _slope=None)[源代码][源代码]

返回与x轴和y轴对齐的椭圆方程;当给定斜率时,返回的方程对应于长轴具有该斜率的椭圆。

参数:
xstr, 可选

x 轴的标签。默认值是 ‘x’。

ystr, 可选

y轴的标签。默认值是 ‘y’。

_slopeExpr, 可选

主轴的斜率。当为 ‘None’ 时忽略。

返回:
方程SymPy 表达式

参见

arbitrary_point

返回椭圆上的参数化点

参考文献

示例

>>> from sympy import Point, Ellipse, pi
>>> from sympy.abc import x, y
>>> e1 = Ellipse(Point(1, 0), 3, 2)
>>> eq1 = e1.equation(x, y); eq1
y**2/4 + (x/3 - 1/3)**2 - 1
>>> eq2 = e1.equation(x, y, _slope=1); eq2
(-x + y + 1)**2/8 + (x + y - 1)**2/18 - 1

e1 上的一个点满足 eq1。让我们使用 x 轴上的一个点:

>>> p1 = e1.center + Point(e1.major, 0)
>>> assert eq1.subs(x, p1.x).subs(y, p1.y) == 0

当旋转到与旋转椭圆相同的角度,围绕椭圆的中心点旋转时,它也将满足旋转椭圆的方程:

>>> r1 = p1.rotate(pi/4, e1.center)
>>> assert eq2.subs(x, r1.x).subs(y, r1.y) == 0
evolute(x='x', y='y')[源代码][源代码]

椭圆的渐屈方程。

参数:
xstr, 可选

x 轴的标签。默认值是 ‘x’。

ystr, 可选

y轴的标签。默认值是 ‘y’。

返回:
方程SymPy 表达式

示例

>>> from sympy import Point, Ellipse
>>> e1 = Ellipse(Point(1, 0), 3, 2)
>>> e1.evolute()
2**(2/3)*y**(2/3) + (3*x - 3)**(2/3) - 5**(2/3)
property foci

椭圆的焦点。

Raises:
ValueError

当无法确定主轴和次轴时。

参见

sympy.geometry.point.Point
focus_distance

返回焦点与中心之间的距离

注释

只有知道长轴/短轴,才能计算焦点。

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.foci
(Point2D(-2*sqrt(2), 0), Point2D(2*sqrt(2), 0))
property focus_distance

椭圆的焦距。

中心与一个焦点之间的距离。

返回:
focus_distance数字

参见

foci

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.focus_distance
2*sqrt(2)
property hradius

椭圆的水平半径。

返回:
hradius数字

参见

vradius, major, minor

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.hradius
3
intersection(o)[源代码][源代码]

这个椭圆与另一个几何实体 \(o\) 的交点。

参数:
oGeometryEntity
返回:
交叉点GeometryEntity 对象列表

注释

目前支持与点、线、线段、射线、圆和椭圆类型的交集。

示例

>>> from sympy import Ellipse, Point, Line
>>> e = Ellipse(Point(0, 0), 5, 7)
>>> e.intersection(Point(0, 0))
[]
>>> e.intersection(Point(5, 0))
[Point2D(5, 0)]
>>> e.intersection(Line(Point(0,0), Point(0, 1)))
[Point2D(0, -7), Point2D(0, 7)]
>>> e.intersection(Line(Point(5,0), Point(5, 1)))
[Point2D(5, 0)]
>>> e.intersection(Line(Point(6,0), Point(6, 1)))
[]
>>> e = Ellipse(Point(-1, 0), 4, 3)
>>> e.intersection(Ellipse(Point(1, 0), 4, 3))
[Point2D(0, -3*sqrt(15)/4), Point2D(0, 3*sqrt(15)/4)]
>>> e.intersection(Ellipse(Point(5, 0), 4, 3))
[Point2D(2, -3*sqrt(7)/4), Point2D(2, 3*sqrt(7)/4)]
>>> e.intersection(Ellipse(Point(100500, 0), 4, 3))
[]
>>> e.intersection(Ellipse(Point(0, 0), 3, 4))
[Point2D(3, 0), Point2D(-363/175, -48*sqrt(111)/175), Point2D(-363/175, 48*sqrt(111)/175)]
>>> e.intersection(Ellipse(Point(-1, 0), 3, 4))
[Point2D(-17/5, -12/5), Point2D(-17/5, 12/5), Point2D(7/5, -12/5), Point2D(7/5, 12/5)]
is_tangent(o)[源代码][源代码]

\(o\) 是椭圆的切线吗?

参数:
oGeometryEntity

一个椭圆、线性实体或多边形

返回:
is_tangent: 布尔值

如果 o 与椭圆相切,则为 True,否则为 False。

Raises:
NotImplementedError

当提供了错误类型的参数时。

参见

tangent_lines

示例

>>> from sympy import Point, Ellipse, Line
>>> p0, p1, p2 = Point(0, 0), Point(3, 0), Point(3, 3)
>>> e1 = Ellipse(p0, 3, 2)
>>> l1 = Line(p1, p2)
>>> e1.is_tangent(l1)
True
property major

椭圆的长轴(如果可以确定),否则为半长轴。

返回:
主要数字或表达式

参见

hradius, vradius, minor

示例

>>> from sympy import Point, Ellipse, Symbol
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.major
3
>>> a = Symbol('a')
>>> b = Symbol('b')
>>> Ellipse(p1, a, b).major
a
>>> Ellipse(p1, b, a).major
b
>>> m = Symbol('m')
>>> M = m + 1
>>> Ellipse(p1, m, M).major
m + 1
property minor

椭圆的短轴(如果可以确定),否则为v半径。

返回:
次要数字或表达式

参见

hradius, vradius, major

示例

>>> from sympy import Point, Ellipse, Symbol
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.minor
1
>>> a = Symbol('a')
>>> b = Symbol('b')
>>> Ellipse(p1, a, b).minor
b
>>> Ellipse(p1, b, a).minor
a
>>> m = Symbol('m')
>>> M = m + 1
>>> Ellipse(p1, m, M).minor
m
normal_lines(p, prec=None)[源代码][源代码]

\(p\) 和椭圆之间的普通行。

参数:
p
返回:
普通行包含 1、2 或 4 行的列表

示例

>>> from sympy import Point, Ellipse
>>> e = Ellipse((0, 0), 2, 3)
>>> c = e.center
>>> e.normal_lines(c + Point(1, 0))
[Line2D(Point2D(0, 0), Point2D(1, 0))]
>>> e.normal_lines(c)
[Line2D(Point2D(0, 0), Point2D(0, 1)), Line2D(Point2D(0, 0), Point2D(1, 0))]

偏轴点需要求解一个四次方程。这通常会导致非常庞大的表达式,可能在实际应用中用途不大。通过传入所需的值,可以获得 \(prec\) 位数的近似解:

>>> e.normal_lines((3, 3), prec=2)
[Line2D(Point2D(-0.81, -2.7), Point2D(0.19, -1.2)),
Line2D(Point2D(1.5, -2.0), Point2D(2.5, -2.7))]

虽然上述解决方案的操作次数为12,但精确解决方案的操作次数为2020。

property periapsis

椭圆的近地点。

焦点与轮廓之间的最短距离。

返回:
近地点数字

参见

apoapsis

返回焦点与轮廓之间的最大距离

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.periapsis
3 - 2*sqrt(2)
plot_interval(parameter='t')[源代码][源代码]

椭圆默认几何图形的绘图间隔。

参数:
参数str, 可选

默认值是 ‘t’。

返回:
plot_interval列表

[参数, 下限, 上限]

示例

>>> from sympy import Point, Ellipse
>>> e1 = Ellipse(Point(0, 0), 3, 2)
>>> e1.plot_interval()
[t, -pi, pi]
polar_second_moment_of_area()[源代码][源代码]

返回椭圆的极惯性矩

它是面积的二阶矩的一个组成部分,通过垂直轴定理相联系。虽然平面面积的二阶矩描述了物体在受到平行于中心轴的平面上的力作用时抵抗偏转(弯曲)的能力,但极面积的二阶矩描述了物体在受到垂直于物体中心轴的平面上的力矩作用时抵抗偏转的能力(即平行于横截面)。

参考文献

示例

>>> from sympy import symbols, Circle, Ellipse
>>> c = Circle((5, 5), 4)
>>> c.polar_second_moment_of_area()
128*pi
>>> a, b = symbols('a, b')
>>> e = Ellipse((0, 0), a, b)
>>> e.polar_second_moment_of_area()
pi*a**3*b/4 + pi*a*b**3/4
random_point(seed=None)[源代码][源代码]

椭圆上的一个随机点。

返回:

参见

sympy.geometry.point.Point
arbitrary_point

返回椭圆上的参数化点

注释

在创建一个随机点时,可以将参数替换为一个随机数。然而,这样做时,随机数应设为有理数,否则该点可能无法通过椭圆内的测试:

>>> from sympy.abc import t
>>> from sympy import Rational
>>> arb = e1.arbitrary_point(t); arb
Point2D(3*cos(t), 2*sin(t))
>>> arb.subs(t, .1) in e1
False
>>> arb.subs(t, Rational(.1)) in e1
True
>>> arb.subs(t, Rational('.1')) in e1
True

示例

>>> from sympy import Point, Ellipse
>>> e1 = Ellipse(Point(0, 0), 3, 2)
>>> e1.random_point() # gives some random point
Point2D(...)
>>> p1 = e1.random_point(seed=0); p1.n(2)
Point2D(2.1, 1.4)
reflect(line)[源代码][源代码]

覆盖 GeometryEntity.reflect,因为半径不是一个 GeometryEntity。

注释

在支持一般椭圆(没有轴平行于x轴)之前,会引发一个NotImplemented错误,并给出定义旋转椭圆零点的方程。

示例

>>> from sympy import Circle, Line
>>> Circle((0, 1), 1).reflect(Line((0, 0), (1, 1)))
Circle(Point2D(1, 0), -1)
>>> from sympy import Ellipse, Line, Point
>>> Ellipse(Point(3, 4), 1, 3).reflect(Line(Point(0, -4), Point(5, 0)))
Traceback (most recent call last):
...
NotImplementedError:
General Ellipse is not supported but the equation of the reflected
Ellipse is given by the zeros of: f(x, y) = (9*x/41 + 40*y/41 +
37/41)**2 + (40*x/123 - 3*y/41 - 364/123)**2 - 1
rotate(angle=0, pt=None)[源代码][源代码]

围绕点 pt 逆时针旋转 angle 弧度。

注意:由于不支持一般椭圆,因此只允许旋转角度为 pi/2 的整数倍。

示例

>>> from sympy import Ellipse, pi
>>> Ellipse((1, 0), 2, 1).rotate(pi/2)
Ellipse(Point2D(0, 1), 1, 2)
>>> Ellipse((1, 0), 2, 1).rotate(pi)
Ellipse(Point2D(-1, 0), 2, 1)
scale(x=1, y=1, pt=None)[源代码][源代码]

覆盖 GeometryEntity.scale 方法,因为需要缩放的是主轴和次轴,而它们不是 GeometryEntities。

示例

>>> from sympy import Ellipse
>>> Ellipse((0, 0), 2, 1).scale(2, 4)
Circle(Point2D(0, 0), 4)
>>> Ellipse((0, 0), 2, 1).scale(2)
Ellipse(Point2D(0, 0), 4, 1)
second_moment_of_area(point=None)[源代码][源代码]

返回椭圆的二阶矩和积矩面积。

参数:
点,可符号化的对象的二元组,或 None(默认=None)

point 是关于其计算面积二次矩的点。如果 “point=None”,则将计算关于通过椭圆质心的轴的面积二次矩。

返回:
I_xx, I_yy, I_xy数字或 SymPy 表达式

I_xx, I_yy 是椭圆的面积的二次矩。I_xy 是椭圆的面积的积矩。

参考文献

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.second_moment_of_area()
(3*pi/4, 27*pi/4, 0)
section_modulus(point=None)[源代码][源代码]

返回一个包含椭圆截面模量的元组

截面模量是椭圆的一个几何特性,定义为面积的二次矩与椭圆极值端到质心轴距离的比值。

参数:
点,可符号化的对象的二元组,或 None(默认=None)

point 是要找到截面模量的点。如果 “point=None”,截面模量将计算为离椭圆质心轴最远的点。

返回:
S_x, S_y: 数字或 SymPy 表达式

S_x 是关于 x 轴的截面模量 S_y 是关于 y 轴的截面模量 负号表示截面模量是针对质心轴下方的一点确定的。

参考文献

示例

>>> from sympy import Symbol, Ellipse, Circle, Point2D
>>> d = Symbol('d', positive=True)
>>> c = Circle((0, 0), d/2)
>>> c.section_modulus()
(pi*d**3/32, pi*d**3/32)
>>> e = Ellipse(Point2D(0, 0), 2, 4)
>>> e.section_modulus()
(8*pi, 4*pi)
>>> e.section_modulus((2, 2))
(16*pi, 4*pi)
property semilatus_rectum

计算椭圆的半正焦弦。

半正焦弦被定义为通过一个焦点的弦的一半,该弦平行于圆锥曲线的准线。

返回:
semilatus_rectum数字

参见

apoapsis

返回焦点与轮廓之间的最大距离

periapsis

焦点与轮廓之间的最短距离

参考文献

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.semilatus_rectum
1/3
tangent_lines(p)[源代码][源代码]

\(p\) 和椭圆之间的切线。

如果 \(p\) 在椭圆上,返回通过点 \(p\) 的切线。否则,返回从 \(p\) 到椭圆的切线,如果没有可能的切线(例如,\(p\) 在椭圆内部),则返回 None。

参数:
p
返回:
切线包含1行或2行的列表
Raises:
NotImplementedError

只能找到椭圆上点 \(p\) 的切线。

示例

>>> from sympy import Point, Ellipse
>>> e1 = Ellipse(Point(0, 0), 3, 2)
>>> e1.tangent_lines(Point(3, 0))
[Line2D(Point2D(3, 0), Point2D(3, -12))]
property vradius

椭圆的垂直半径。

返回:
vradius数字

参见

hradius, major, minor

示例

>>> from sympy import Point, Ellipse
>>> p1 = Point(0, 0)
>>> e1 = Ellipse(p1, 3, 1)
>>> e1.vradius
1
class sympy.geometry.ellipse.Circle(*args, **kwargs)[源代码][源代码]

空间中的一个圆。

简单地由一个中心和一个半径、三个非共线点,或圆的方程构造而成。

参数:
中心
半径数字或 SymPy 表达式
三个点的序列
方程圆的方程
属性:
半径(与 hradius、vradius、major 和 minor 同义)
circumference

圆的周长。

equation

圆的方程。

方法

arbitrary_point([parameter])

椭圆上的一个参数化点。

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

atoms(*types)

返回构成当前对象的原子。

auxiliary_circle()

返回一个直径为椭圆长轴的圆。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

complement(universe)

相对于给定全集的 'self' 的补集。

contains(other)

返回一个 SymPy 值,指示 other 是否包含在 self 中:如果包含则返回 true,如果不包含则返回 false,否则返回一个未求值的 Contains 表达式(或者,在 ConditionSet 和 FiniteSet/Intervals 的并集的情况下,返回一个表示包含条件的表达式)。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

director_circle()

返回一个由椭圆上所有点组成的圆,这些点是两条垂直切线的交点。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

encloses(o)

如果 o 在 self 的边界内(不在边界上或外部),则返回 True。

encloses_point(p)

如果 p 被 self 包围(即在 self 内部),则返回 True。

equation([x, y])

圆的方程。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

evolute([x, y])

椭圆的渐屈方程。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

intersect(other)

返回 'self' 和 'other' 的交集。

intersection(o)

这个圆与另一个几何实体的交点。

is_disjoint(other)

如果 selfother 不相交,则返回 True。

is_proper_subset(other)

如果 selfother 的真子集,则返回 True。

is_proper_superset(other)

如果 selfother 的真超集,则返回 True。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

is_similar(other)

这个几何实体与另一个几何实体相似吗?

is_subset(other)

如果 selfother 的子集,则返回 True。

is_superset(other)

如果 selfother 的超集,则返回 True。

is_tangent(o)

\(o\) 是椭圆的切线吗?

isdisjoint(other)

别名 is_disjoint()

issubset(other)

别名为 is_subset()

issuperset(other)

别名 is_superset()

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal_lines(p[, prec])

\(p\) 和椭圆之间的普通行。

parameter_value(other, t)

返回与给定点对应的参数。

plot_interval([parameter])

椭圆默认几何图形的绘图间隔。

polar_second_moment_of_area()

返回椭圆的极惯性矩

powerset()

找到 self 的幂集。

random_point([seed])

椭圆上的一个随机点。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

reflect(line)

覆盖 GeometryEntity.reflect,因为半径不是一个 GeometryEntity。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

rotate([angle, pt])

围绕点 pt 逆时针旋转 angle 弧度。

scale([x, y, pt])

覆盖 GeometryEntity.scale,因为半径不是 GeometryEntity。

second_moment_of_area([point])

返回椭圆的二阶矩和积矩面积。

section_modulus([point])

返回一个包含椭圆截面模量的元组

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

symmetric_difference(other)

返回 selfother 的对称差集。

tangent_lines(p)

\(p\) 和椭圆之间的切线。

translate([x, y])

通过将 x 和 y 值添加到 x,y 坐标来移动对象。

union(other)

返回 selfother 的并集。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

等于

is_hypergeometric

Raises:
GeometryError

当给定的方程不是圆的方程时。当试图从不正确的参数构建圆时。

示例

>>> from sympy import Point, Circle, Eq
>>> from sympy.abc import x, y, a, b

以中心和半径构造的圆:

>>> c1 = Circle(Point(0, 0), 5)
>>> c1.hradius, c1.vradius, c1.radius
(5, 5, 5)

由三个点构成的圆:

>>> c2 = Circle(Point(0, 0), Point(1, 1), Point(1, 0))
>>> c2.hradius, c2.vradius, c2.radius, c2.center
(sqrt(2)/2, sqrt(2)/2, sqrt(2)/2, Point2D(1/2, 1/2))

一个圆也可以通过形式为 \(a*x**2 + by**2 + gx + hy + c = 0\) 的方程来构造:

>>> Circle(x**2 + y**2 - 25)
Circle(Point2D(0, 0), 5)

如果对应于 x 和 y 的变量被命名为其他名称,可以提供它们的名称或符号:

>>> Circle(Eq(a**2 + b**2, 25), x='a', y=b)
Circle(Point2D(0, 0), 5)
property circumference

圆的周长。

返回:
周长数字或 SymPy 表达式

示例

>>> from sympy import Point, Circle
>>> c1 = Circle(Point(3, 4), 6)
>>> c1.circumference
12*pi
equation(x='x', y='y')[源代码][源代码]

圆的方程。

参数:
xstr 或 Symbol,可选

默认值为 ‘x’。

ystr 或 Symbol,可选

默认值为 ‘y’。

返回:
方程SymPy 表达式

示例

>>> from sympy import Point, Circle
>>> c1 = Circle(Point(0, 0), 5)
>>> c1.equation()
x**2 + y**2 - 25
intersection(o)[源代码][源代码]

这个圆与另一个几何实体的交点。

参数:
oGeometryEntity
返回:
交叉点GeometryEntities 列表

示例

>>> from sympy import Point, Circle, Line, Ray
>>> p1, p2, p3 = Point(0, 0), Point(5, 5), Point(6, 0)
>>> p4 = Point(5, 0)
>>> c1 = Circle(p1, 5)
>>> c1.intersection(p2)
[]
>>> c1.intersection(p4)
[Point2D(5, 0)]
>>> c1.intersection(Ray(p1, p2))
[Point2D(5*sqrt(2)/2, 5*sqrt(2)/2)]
>>> c1.intersection(Line(p2, p3))
[]
property radius

圆的半径。

返回:
半径数字或 SymPy 表达式

示例

>>> from sympy import Point, Circle
>>> c1 = Circle(Point(3, 4), 6)
>>> c1.radius
6
reflect(line)[源代码][源代码]

覆盖 GeometryEntity.reflect,因为半径不是一个 GeometryEntity。

示例

>>> from sympy import Circle, Line
>>> Circle((0, 1), 1).reflect(Line((0, 0), (1, 1)))
Circle(Point2D(1, 0), -1)
scale(x=1, y=1, pt=None)[源代码][源代码]

覆盖 GeometryEntity.scale,因为半径不是 GeometryEntity。

示例

>>> from sympy import Circle
>>> Circle((0, 0), 1).scale(2, 2)
Circle(Point2D(0, 0), 2)
>>> Circle((0, 0), 1).scale(2, 4)
Ellipse(Point2D(0, 0), 2, 4)
property vradius

此椭圆属性是圆的半径的别名。

虽然 hradius、major 和 minor 可以使用 Ellipse 的约定,但 vradius 对于圆并不存在。它始终是一个正值,以便圆,像多边形一样,可以根据 hradius 的符号确定其面积为正或负。

示例

>>> from sympy import Point, Circle
>>> c1 = Circle(Point(3, 4), 6)
>>> c1.vradius
6