一个描述向量的类(5.5—继续改进)

练习用,看起来挺无聊的

------------------------------

5.4 看了镐头书,简化了vertical?和parallel?两个方法

5.5 原来"+"和"-"也是可以直接定义的................

ruby 代码
  1. class Vector   
  2.   attr_reader :x , :y:mod  
  3.   attr_writer :x:y  
  4.   #初始化   
  5.   def initialize(x,y)   
  6.     @x = x   
  7.     @y = y   
  8.     @mod = (x**2 + y**2) ** 0.5   
  9.   end  
  10.   #加   
  11.   def +(vector)   
  12.     if vector.class != Vector   
  13.       puts  "#{vector}不是一个向量!"  
  14.     else  
  15.       @x += vector.x   
  16.       @y += vector.y   
  17.       puts "(#@x,#@y)"  
  18.     end  
  19.   end  
  20.   #减   
  21.   def -(vector)   
  22.     if vector.class != Vector   
  23.       puts  "#{vector}不是一个向量!"  
  24.     else  
  25.       @x -= vector.x   
  26.       @y -= vector.y   
  27.       puts "(#@x,#@y)"  
  28.     end  
  29.   end  
  30.   #是否平行   
  31.   def parallel?(vector)   
  32.     if vector.class != Vector   
  33.       puts  "#{vector}不是一个向量!"  
  34.     else    
  35.       puts((vector.x / @x) == (vector.y / @y))    
  36.     end  
  37.   end  
  38.   #与实数的积   
  39.   def multiply(number)   
  40.     if (number.class == Fixnumor (number.class == Bignumor (number.class == Float)   
  41.      @x *= number   
  42.      @y *= number   
  43.       puts "(#@x,#@y)"  
  44.     else  
  45.       puts "#{number}不是一个数字!"  
  46.     end  
  47.   end  
  48.   #数量积   
  49.   def innerproduct(vector)   
  50.     if vector.class != Vector   
  51.       puts  "#{vector}不是一个向量!"  
  52.     else    
  53.       puts @x * vector.x + @y * vector.y   
  54.     end  
  55.   end  
  56.   #是否垂直   
  57.   def vertical?(vector)   
  58.     if vector.class != Vector   
  59.       puts  "#{vector}不是一个向量!"  
  60.     else    
  61.       puts((@x * vector.x + @y * vector.y) == 0)   
  62.     end  
  63.   end  
  64.   #夹角   
  65.   def inclination(vector)   
  66.     if vector.class != Vector   
  67.       puts  "#{vector}不是一个向量!"  
  68.     else    
  69.       puts Math.acos((@x * vector.x + @y * vector.y) / (@mod * vector.mod))    
  70.     end  
  71.   end  
  72.   #平移   
  73.   def translate(vector)   
  74.     if vector.class != Vector   
  75.       puts  "#{vector}不是一个向量!"  
  76.     else  
  77.       @x += vector.x   
  78.       @y += vector.y   
  79.       puts "(#@x,#@y)"  
  80.     end  
  81.   end  
  82. end  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值