实体

class sympy.geometry.entity.GeometryEntity(*args, **kwargs)[源代码][源代码]

所有几何实体的基类。

此类不代表任何特定的几何实体,它仅提供一些常见于所有子类的方法的实现。

属性:
ambient_dimension

该物体所处的空间维度是多少?

args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

bounds

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

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

as_content_primitive([radical, clear])

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

as_dummy()

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

atoms(*types)

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

class_key()

类的好顺序。

compare(other)

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

count(query)

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

count_ops([visual])

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

doit(**hints)

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

dummy_eq(other[, symbol])

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

encloses(o)

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

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

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

find(query[, group])

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

fromiter(args, **assumptions)

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

has(*patterns)

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

has_free(*patterns)

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

has_xfree(s)

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

intersection(o)

返回 self 与 o 的所有交集的列表。

is_same(b[, approx])

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

is_similar(other)

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

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

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

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

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

parameter_value(other, t)

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

rcall(*args)

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

refine([assumption])

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

reflect(line)

反映一个对象穿过一条线。

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

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

rewrite(*args[, deep])

使用定义的规则重写 self

rotate(angle[, pt])

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

scale([x, y, pt])

通过将 x,y 坐标乘以 x 和 y 来缩放对象。

simplify(**kwargs)

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

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

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

translate([x, y])

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

xreplace(rule)

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

复制

could_extract_minus_sign

等于

is_hypergeometric

property ambient_dimension

该物体所处的空间维度是多少?

property bounds

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

encloses(o)[源代码][源代码]

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

对象将被分解为点,而单个实体只需为其类定义一个 encloses_point 方法。

示例

>>> from sympy import RegularPolygon, Point, Polygon
>>> t  = Polygon(*RegularPolygon(Point(0, 0), 1, 3).vertices)
>>> t2 = Polygon(*RegularPolygon(Point(0, 0), 2, 3).vertices)
>>> t2.encloses(t)
True
>>> t.encloses(t2)
False
intersection(o)[源代码][源代码]

返回 self 与 o 的所有交集的列表。

注释

实体不需要实现此方法。

如果两种不同类型的实体可以相交,那么在 ordering_of_classes 中索引较高的实体应该实现与索引较低的任何实体的相交。

is_similar(other)[源代码][源代码]

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

如果一个实体的均匀缩放(放大或缩小)可以使一个实体变成另一个实体,那么这两个实体是相似的。

参见

scale

注释

此方法不旨在直接使用,而是通过 util.py 中的 \(are_similar\) 函数来使用。实体不需要实现此方法。如果两种不同类型的实体可以相似,则只需要其中一种能够确定这一点。

parameter_value(other, t)[源代码][源代码]

返回与给定点对应的参数。在此参数值处评估实体的任意点将返回给定点。

示例

>>> from sympy import Line, Point
>>> from sympy.abc import t
>>> a = Point(0, 0)
>>> b = Point(2, 2)
>>> Line(a, b).parameter_value((1, 1), t)
{t: 1/2}
>>> Line(a, b).arbitrary_point(t).subs(_)
Point2D(1, 1)
reflect(line)[源代码][源代码]

反映一个对象穿过一条线。

参数:
line: 线

示例

>>> from sympy import pi, sqrt, Line, RegularPolygon
>>> l = Line((0, pi), slope=sqrt(2))
>>> pent = RegularPolygon((1, 2), 1, 5)
>>> rpent = pent.reflect(l)
>>> rpent
RegularPolygon(Point2D(-2*sqrt(2)*pi/3 - 1/3 + 4*sqrt(2)/3, 2/3 + 2*sqrt(2)/3 + 2*pi/3), -1, 5, -atan(2*sqrt(2)) + 3*pi/5)
>>> from sympy import pi, Line, Circle, Point
>>> l = Line((0, pi), slope=1)
>>> circ = Circle(Point(0, 0), 5)
>>> rcirc = circ.reflect(l)
>>> rcirc
Circle(Point2D(-pi, pi), -5)
rotate(angle, pt=None)[源代码][源代码]

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

默认的 pt 是原点,Point(0, 0)

参见

scale, translate

示例

>>> from sympy import Point, RegularPolygon, Polygon, pi
>>> t = Polygon(*RegularPolygon(Point(0, 0), 1, 3).vertices)
>>> t # vertex on x axis
Triangle(Point2D(1, 0), Point2D(-1/2, sqrt(3)/2), Point2D(-1/2, -sqrt(3)/2))
>>> t.rotate(pi/2) # vertex on y axis now
Triangle(Point2D(0, 1), Point2D(-sqrt(3)/2, -1/2), Point2D(sqrt(3)/2, -1/2))
scale(x=1, y=1, pt=None)[源代码][源代码]

通过将 x,y 坐标乘以 x 和 y 来缩放对象。

如果给出了 pt,则缩放是相对于该点的;对象先平移 -pt,然后缩放,最后再平移 pt。

参见

rotate, translate

示例

>>> from sympy import RegularPolygon, Point, Polygon
>>> t = Polygon(*RegularPolygon(Point(0, 0), 1, 3).vertices)
>>> t
Triangle(Point2D(1, 0), Point2D(-1/2, sqrt(3)/2), Point2D(-1/2, -sqrt(3)/2))
>>> t.scale(2)
Triangle(Point2D(2, 0), Point2D(-1, sqrt(3)/2), Point2D(-1, -sqrt(3)/2))
>>> t.scale(2, 2)
Triangle(Point2D(2, 0), Point2D(-1, sqrt(3)), Point2D(-1, -sqrt(3)))
translate(x=0, y=0)[源代码][源代码]

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

参见

rotate, scale

示例

>>> from sympy import RegularPolygon, Point, Polygon
>>> t = Polygon(*RegularPolygon(Point(0, 0), 1, 3).vertices)
>>> t
Triangle(Point2D(1, 0), Point2D(-1/2, sqrt(3)/2), Point2D(-1/2, -sqrt(3)/2))
>>> t.translate(2)
Triangle(Point2D(3, 0), Point2D(3/2, sqrt(3)/2), Point2D(3/2, -sqrt(3)/2))
>>> t.translate(2, 2)
Triangle(Point2D(3, 2), Point2D(3/2, sqrt(3)/2 + 2), Point2D(3/2, 2 - sqrt(3)/2))