2012-01-23 9 views
2

私の最終目標は、テキストファイルから読み込んだポイントを3Dオブジェクトに変換することです。可視化する必要はありませんが、x、y、zの値を含むストリングの代わりにオブジェクトに格納する必要があります。このファイルは私に6つの数字、それぞれx、y、zの2つを与えています。そして、私は3つの変数をすべて取るポイントクラス/オブジェクトを作成する方法を考えていました。ポイント。Pythonで3Dオブジェクト/クラスを作成するにはどうすればよいですか?

+0

3Dオブジェクトを表示するか、保存するだけですか? – juliomalegria

+0

文字列を数値に変換するのは簡単です。つまり、Point3D(x、y、z)とLine(point1、point2)の2つのクラスを定義しています。あなたは本当に何をしようとしていますか? – delnan

+1

私はあなたが望むものをほとんど手がかりにしたチュートリアルを書いています:http://www.petercollingridge.co.uk/pygame-3d-graphics-tutorial/nodes-and-edges –

答えて

7

だけPointLineクラスを定義します。

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

class Line(object): 
    def __init__(self, point1=None, point2=None): 
     self.point1 = point1 or Point() # (0,0,0) by default 
     self.point2 = point2 or Point() # (0,0,0) by default 

点や線オブジェクトを作成するには:

>>> p1 = Point(1, 2, 3) 
>>> p2 = Point(4, 5, 6) 
>>> line = Line(p1, p2) 
2

ファイルからデータを持っていると(この正規表現が適用されるために)、あなたは2つの点を格納するために定義されたクラスにそれを入力したいでしょう(それはオブジェクトそのものかもしれません)。

class Point(tuple): 
    @property 
    def x: 
     return self[0] 

    @property 
    def y: 
     return self[1] 

    @property 
    def z: 
     return self[2] 

class Vector(object): 
    def __init__(self, x1, y1, z1, x2, y2, z2): 
     self._a = Point(x1, y1, z1) 
     self._b = Point(x2, y2, z2) 

    @property 
    def a(self): 
     return self._a 

    @property 
    def b(self): 
     return self._b 

    # Other methods here e.g. 

    @property 
    def i(self): 
     return self.b.x - self.a.x 

    @property 
    def j(self): 
     return self.b.y - self.a.y 

    @property 
    def k(self): 
     return self.b.z - self.a.z 

    def length(self): 
     return (self.i**2 + self.j**2 + self.k**2) ** (1/2) 
関連する問題