from math import hypot

#定义向量的构造方法
class Vector:
def __init__(self,x=0,y=0):
self.x=x;
self.y=y;
'''
__repr__是python的内置方法,他能将一个对象用字符串的形式表达出来
%r用rper()方法处理对象 输出结果 'content'
%s用str()方法处理对象 输出结果 content 不带引号
如果你只想实现这两个特殊方法中的一个,__repr__ 是更好的选择,因为如果一个对象
没有 __str__ 函数,而 Python 又需要调用它的时候,解释器会用 __repr__ 作为替代
''' def __repr__(self):
return 'Vector(%r,%r)' % (self.x,self.y)
'''
定义__abs__方法
返回hypot函数的运算结果
hypot() 返回欧几里德范数 sqrt(x*x + y*y)。
'''
def __abs__(self):
return hypot(self.x,self.y)
'''
bool(abs(self)) 把模值变成了布尔值
我们对 __bool__ 的实现很简单,如果一个向量的模是 0,
那么就返回 False,其他情况则返回 True。 如果想让 Vector.__bool__ 更高效,可以采用这种实现:
def __bool__(self):
return bool(self.x or self.y)
'''
def __bool__(self):
return bool(abs(self))
'''
__add__ 和 __mul__,这两个方法的返回值都是新创建的向量对象,
other代表其他向量对象,
其返回值都是靠运算符 + 或者 * 实现的运算结果 '''
def __add__(self, other):
x=self.x+other.x
y=self.y+other.y return Vector(x,y) def __mul__(self,scalar):
return Vector(self.x*scalar,self.y*scalar) #创建两个向量实例 v1 v2
print('=============================输出两个向量加运算========================')
v1=Vector(2,4)
v2=Vector(2,1)
print(v1+v2)
print('=============================输出单个向量欧几里德运算========================')
# 求该向量的欧几里得范数
v=Vector(3,4)
print(abs(v)) print('=============================输出单个向量的标量乘法运算========================')
print(v*3)
print(abs(v*3)) # (3*3)(3*3) +(4*3)(4*3) 的结果开方

python3 定义向量运算的更多相关文章

  1. UVa 11437:Triangle Fun(计算几何综合应用,求直线交点,向量运算,求三角形面积)

    Problem ATriangle Fun Input: Standard Input Output: Standard Output In the picture below you can see ...

  2. Unity 三角函数 向量 运算

    其实三维的和二维的基本差不多,一样的运算方式,unity已经把所有的方法都封装起来,主要是理解,能理解了就直接调用了 三角函数 知识点:三角函数基础正玄余玄.三角函数曲线.弧度制和角度制.弧度制和角度 ...

  3. 向量运算 与 JavaScript

    二维向量都包含两个值:方向(direction)及大小(magnitude)   这两个值可以表达出各种各样的物理特性来,比如力和运动.如两个物体间的碰撞检测.   向量的大小   虽说二维向量是对大 ...

  4. 3D数学读书笔记——向量运算及在c++上的实现

     本系列文章由birdlove1987编写.转载请注明出处.     文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661   ...

  5. 向量运算(lua,三维) 点乘、叉乘、模、夹角

    向量运算在游戏制作中经常用到,稍微总结一下. 一.点乘 如图,假设   向量a与b的点乘表示a在b上的投影与b的模的乘积 公式: 代码: function MathHelper.GetVector3D ...

  6. Eigen中的矩阵及向量运算

    Eigen中的矩阵及向量运算 ,[+,+=,-,-=] ,[\*,\*=] ,[.transpose()] ,[.dot(),.cross(),.adjoint()] ,针对矩阵元素进行的操作[.su ...

  7. 快速电路仿真器(FastSPICE)中的高性能矩阵向量运算实现

    今年10-11月份参加了EDA2020(第二届)集成电路EDA设计精英挑战赛,通过了初赛,并参加了总决赛,最后拿了一个三等奖,虽然成绩不是很好,但是想把自己做的分享一下,我所做的题目是概伦电子出的F题 ...

  8. Matlab矩阵基本操作(定义,运算)

    转自:http://blog.csdn.net/perfumekristy/article/details/8119861 一.矩阵的表示在MATLAB中创建矩阵有以下规则: a.矩阵元素必须在”[ ...

  9. Python3基础-分数运算

    Python3分数运算 fractions 模块可以被用来执行包含分数的数学运算. 案例 >>> from fractions import Fraction >>> ...

随机推荐

  1. JZOJ 5461. 【NOIP2017提高A组冲刺11.8】购物

    5461. [NOIP2017提高A组冲刺11.8]购物 (File IO): input:shopping.in output:shopping.out Time Limits: 1000 ms   ...

  2. JZOJ 2136. 【GDKOI2004】汉诺塔

    2136. [GDKOI2004]汉诺塔 (Standard IO) Time Limits: 3000 ms  Memory Limits: 128000 KB  Detailed Limits   ...

  3. 16.VUE学习之-v-show的使用与v-if的差异对比

    v-show的使用与v-if的差异对比 相同点: 都可以达到隐藏和显示的效果. 不同点: v-show 会用display:none 来隐藏元素节点,推荐使用这种方式 v-if 会移除节点,可以配合v ...

  4. 748. Shortest Completing Word

    https://leetcode.com/problems/shortest-completing-word/description/ class Solution { public: string ...

  5. A1002 A+B for Polynomials (25)(25 分)

    1002 A+B for Polynomials (25)(25 分) This time, you are supposed to find A+B where A and B are two po ...

  6. Android开发——HandlerThread以及IntentService详解

    .HandlerThread Android API提供了HandlerThread来创建线程.官网的解释是: //Handy class for starting a new thread that ...

  7. D3DXCreateTexture

    HRESULT D3DXCreateTexture( __in LPDIRECT3DDEVICE9 pDevice, __in UINT Width, __in UINT Height, __in U ...

  8. 设计模式之第15章-适配器模式(Java实现)

    设计模式之第15章-适配器模式(Java实现) “呔,来着何人,报上名来.”“这是谁啊,我怎么没见过”,“就是啊,我也没印象.”“我当然是适配器了,要不然还能是谁.”适配器模式碎碎念:我不就是昨天把你 ...

  9. CentOS 7 编译安装最新版git

    安装wget yum install wget -y 下载最新版本的git源码,并解压 cd /usr/local/src/ wget https://mirrors.edge.kernel.org/ ...

  10. PostgreSQL查看索引的使用情况

    查看某个表的索引使用情况 select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch from pg_stat_user_i ...