Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在sage中输入与多边形边相对应的$R^2$点对列表,并绘制相应多边形的图片,?_Python 3.x_Geometry_Polygon_Computational Geometry_Sage - Fatal编程技术网

Python 3.x 如何在sage中输入与多边形边相对应的$R^2$点对列表,并绘制相应多边形的图片,?

Python 3.x 如何在sage中输入与多边形边相对应的$R^2$点对列表,并绘制相应多边形的图片,?,python-3.x,geometry,polygon,computational-geometry,sage,Python 3.x,Geometry,Polygon,Computational Geometry,Sage,假设我想在Sage中输入一组与多边形边集相对应的点对。例如,假设我想在$R^2$中使用顶点集(列表)V生成一个(非凸)多边形: V=[[0,0],[1,0],[2,1],[2,-1]] 以及边的集合 E=[[0,0],[2,1],[2,1],[1,0],[2,-1],[1,0],[2,-1],[0,0]] 我不知道如何将E输入到sage中,例如,[[0,0],[2,1]]被理解为连接[0,0]和[2,1]的唯一直线段 在那之后,我还想把它推广到用顶点集V、边集E和面集E在$R^3$中绘制一个多面

假设我想在Sage中输入一组与多边形边集相对应的点对。例如,假设我想在$R^2$中使用顶点集(列表)V生成一个(非凸)多边形:

V=[[0,0],[1,0],[2,1],[2,-1]]

以及边的集合

E=[[0,0],[2,1],[2,1],[1,0],[2,-1],[1,0],[2,-1],[0,0]]

我不知道如何将E输入到sage中,例如,[[0,0],[2,1]]被理解为连接[0,0]和[2,1]的唯一直线段

在那之后,我还想把它推广到用顶点集V、边集E和面集E在$R^3$中绘制一个多面体。

您需要什么

sage: L = [[cos(pi*i/3),sin(pi*i/3)] for i in range(6)]
sage: polygon2d(L, rgbcolor=(1,0,1))

或者这一条表明它将始终按照您给出的顺序连接:

sage: L = [[cos(pi*2*i/3)+random()*.2,sin(pi*2*i/3)+random()*.2] for i in range(6)]
sage: polygon2d(L, rgbcolor=(1,0,1),fill=False)


否则,您可以使用相当高级的功能…

好的,这里有一种完全不同的纯图论方法

sage: D = {'[0,0]':['[2,1]','[2,-1]'], '[1,0]':['[2,1]','[2,-1]']}
sage: G = Graph(D)
sage: D1 = {d:eval(d) for d in G.vertices()}
sage: G = Graph(D,pos=D1)
sage: G.show(axes=True)

请注意,我必须对顶点使用哈希键,因为这是一个字典


我想你也可以有一本“大师级”词典,它可以更合理地命名事物,并从中创建这两个词,但这可能需要比我现在这个时候更聪明一点。

kcrisman:谢谢,但我怀疑这对我来说是否行得通。显然,所有的“多边形”示例实际上都是三角形,除了下面的一个:sage:P=polygon([(0,0),(1,2),(0,1),(-1,2)])sage:P=P[0];p多边形由4个点定义,它没有给我任何绘图。但是,“由4个点定义的多边形”也没有意义,因为由4个点定义的“多边形=四边形”不是唯一的。这就是为什么我们需要明确地告诉Sage我们想要连接的顶点和不想要连接的顶点,这是我在问题中提到的。形式上,多边形将是一个具有给定顶点V和边E的图形。实际上,我刚刚尝试从sage.plot.polygon导入多边形([(0,0),(2,1),(1,0),(2,-1)])这为具有这些顶点的多边形提供了一种可能性,而不是另一种可能性。我想我需要的是sage中的图形绘制软件,当我指定顶点和边集时,它可以为我绘制图形。我查阅了图形绘制部分,但没有找到任何这样的命令。我不确定您的问题是什么。立即更新答案。(而且“由4个点定义的多边形”只是简写。
p.xdata
p.ydata
肯定会给你提供更多信息。)哦,你想要图形吗?包括有关如何定位图形的信息。但是图形和多边形是完全不同的数学对象。为什么不单独问一个关于如何以这种方式输入图形的问题呢?如果你愿意的话,你甚至可以使用顶点作为顶点的名称。至于面,我不知道,因为面绝对不是图形所必需的,而Sage中的图形并不是真正的“嵌入图”,大多数时候只是组合对象。