python3 定义向量运算
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 定义向量运算的更多相关文章
- UVa 11437:Triangle Fun(计算几何综合应用,求直线交点,向量运算,求三角形面积)
Problem ATriangle Fun Input: Standard Input Output: Standard Output In the picture below you can see ...
- Unity 三角函数 向量 运算
其实三维的和二维的基本差不多,一样的运算方式,unity已经把所有的方法都封装起来,主要是理解,能理解了就直接调用了 三角函数 知识点:三角函数基础正玄余玄.三角函数曲线.弧度制和角度制.弧度制和角度 ...
- 向量运算 与 JavaScript
二维向量都包含两个值:方向(direction)及大小(magnitude) 这两个值可以表达出各种各样的物理特性来,比如力和运动.如两个物体间的碰撞检测. 向量的大小 虽说二维向量是对大 ...
- 3D数学读书笔记——向量运算及在c++上的实现
本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661 ...
- 向量运算(lua,三维) 点乘、叉乘、模、夹角
向量运算在游戏制作中经常用到,稍微总结一下. 一.点乘 如图,假设 向量a与b的点乘表示a在b上的投影与b的模的乘积 公式: 代码: function MathHelper.GetVector3D ...
- Eigen中的矩阵及向量运算
Eigen中的矩阵及向量运算 ,[+,+=,-,-=] ,[\*,\*=] ,[.transpose()] ,[.dot(),.cross(),.adjoint()] ,针对矩阵元素进行的操作[.su ...
- 快速电路仿真器(FastSPICE)中的高性能矩阵向量运算实现
今年10-11月份参加了EDA2020(第二届)集成电路EDA设计精英挑战赛,通过了初赛,并参加了总决赛,最后拿了一个三等奖,虽然成绩不是很好,但是想把自己做的分享一下,我所做的题目是概伦电子出的F题 ...
- Matlab矩阵基本操作(定义,运算)
转自:http://blog.csdn.net/perfumekristy/article/details/8119861 一.矩阵的表示在MATLAB中创建矩阵有以下规则: a.矩阵元素必须在”[ ...
- Python3基础-分数运算
Python3分数运算 fractions 模块可以被用来执行包含分数的数学运算. 案例 >>> from fractions import Fraction >>> ...
随机推荐
- python3.7 倒计时
#!/usr/bin/env python __author__ = "lrtao2010" # python3.7 倒计时 import time for i in range( ...
- Python之路--Python初识
Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程 ...
- VMware之无法切换桥接网络
一.关闭正在运行的虚拟机 二.打开虚拟网络编辑器 三.还原默认设置 四.启动虚拟机即可正常使用桥接网络
- python基础——18(面向对象2+异常处理)
一.组合 自定义类的对象作为另一个类的属性. class Teacher: def __init__(self,name,age): self.name = name self.age = age t ...
- golang echo livereload
echo on port 1323 gin -a 1323 run server.go go get github.com/codegangsta/gin gin -h
- Proguard returned with error code 1. See console
满世界的bug. 微信支付,Windows的远程桌面. Android的 , Proguard returned with error code 1. See console解决办法" 真的 ...
- WTForm
Flask-WTForm: from flask import Flask,render_template,request,redirect from wtforms.fields import co ...
- 37、iamgeview 图层叠加
1 Drawable d1 = new BitmapDrawable(circleBitmap); Drawable d2 = login.this.getResources().getDrawabl ...
- 转载: CRichEditCtrl使用大全
richedit 常见使用问题 一.常见问题 a.可以编译,不能执行的 在需要在相应的对话框中加上InitInstance(void)函数中添加 AfxInitRichEdit(); b.升级默认的R ...
- 启用hyper后无法打开vmware
十万火急,想办法先让虚拟机能够打开,毕竟经常用. 网上看了无数教程都是让在控制面板中关闭hyper-v,然而并没有用. 找了好久说是不能那样关闭,得用指令.管理员运行powershell,输入下列指令 ...