实体¶
- 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)[源代码][源代码]¶
这个几何实体与另一个几何实体相似吗?
如果一个实体的均匀缩放(放大或缩小)可以使一个实体变成另一个实体,那么这两个实体是相似的。
参见
注释
此方法不旨在直接使用,而是通过 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)
示例
>>> 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。
示例
>>> 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 坐标上来移动对象。
示例
>>> 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))