#!/usr/bin/python
#coding:utf-8
import math
#下面是一个向量的计算
class Vector(object):
#初始化函数(可传参数)
def __init__(self,x=0.0,y=0.0):
self.x = x
self.y = y
#打印类的时候使用的(print Vector())
def __str__(self):
return '(%s,%s)'%(self.x,self.y)
#创建一个静态的类,计算向量的
@classmethod
def from_point(cls,P1,P2):
#向量的计算
return cls(P2.x-P1.x,P2.y-P1.y)
#向量的大小可以简单的理解为那根箭头的长度,勾股定理熟稔的各位立刻知道怎么计算了
#math.sqrt(3**2+4**2) 勾股定理
def get_magnitude(self):
return math.sqrt(self.x**2 + self.y**2)
#获取单位向量
def normalize(self):
magnitude = self.get_magnitude()
self.x /= magnitude
self.y /= magnitude
return self.x,self.y
#加法运算
def __add__(self,rhs):
return Vector(self.x + rhs.x,self.y + rhs.x)
def __sub__(self,rhs):
return Vector(self.x - rhs.x,self.y - rhs.y)
def __mul__(self,scalar):
return Vector(self.x * scalar,self.y * scalar)
def __div__(self,scalar):
return Vector(self.x / scalar,self.y / scalar)
if __name__ == '__main__':
A = Vector(10.0, 20.0)
B = Vector(30.0, 35.0)
AB = Vector.from_point(A, B)
print AB.x
print "Vector AB is", AB
print "AB * 2 is", AB * 2
print "AB / 2 is", AB / 2
print "AB + (–10, 5) is", AB + AB
print "Magnitude of AB is", AB.get_magnitude()
print "AB normalized is", AB.normalize()
#输出
20.0
Vector AB is (20.0,15.0)
AB * 2 is (40.0,30.0)
AB / 2 is (10.0,7.5)
AB + (鈥?0, 5) is (40.0,35.0)
Magnitude of AB is 25.0
AB normalized is (0.8, 0.6)
python 类的使用2
最新推荐文章于 2023-03-20 17:19:53 发布