簡體   English   中英

如何操作Python中的笛卡爾坐標?

[英]How can I manipulate cartesian coordinates in Python?

我有一組基本的笛卡爾坐標,我想用Python操作它們。 例如,我有以下框(坐標顯示為角):

0,4 --- 4,4

0,0 --- 4,0

我希望能夠找到一個以(0,2)開頭並轉到(4,2)的行。 我是否需要將每個坐標分解為單獨的X和Y值然后使用基本數學,或者有沒有辦法將坐標作為(x,y)對處理? 例如,我想說:

New_Row_Start_Coordinate = (0,2) + (0,0)
New_Row_End_Coordinate = New_Row_Start_Coordinate + (0,4)

聽起來你正在尋找一個Point類。 這是一個簡單的:

class Point:
  def __init__(self, x, y):
    self.x, self.y = x, y

  def __str__(self):
    return "{}, {}".format(self.x, self.y)

  def __neg__(self):
    return Point(-self.x, -self.y)

  def __add__(self, point):
    return Point(self.x+point.x, self.y+point.y)

  def __sub__(self, point):
    return self + -point

然后你可以做這樣的事情:

>>> p1 = Point(1,1)
>>> p2 = Point(3,4)
>>> print p1 + p2
4, 5

您可以根據需要添加任意數量的其他操作。 有關您可以實現的所有方法的列表,請參閱Python文檔

根據你想要對坐標做什么,你也可以濫用復數

import cmath

New_Row_Start_Coordinate = (0+2j) + (0+0j)
New_Row_End_Coordinate = New_Row_Start_Coordinate + (4+0j)

print New_Row_End_Coordinate.real
print New_Row_End_Coordinate.imag

Python本身不支持列表上的元素操作; 你可以通過列表推導或map來做到這一點但這對於這個用例來說有點笨拙。 如果你做了很多這樣的事情,我建議你看看NumPy

對於a = (0,2)b = (0,0) a + b將產生(0, 2, 0, 0) ,這可能不是你想要的。 我建議使用numpyadd功能: http//docs.scipy.org/doc/numpy/reference/generated/numpy.add.html

參數:x1,x2:array_like

返回:x1和x2之和,以元素為單位。 (......)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM