js向量

// 随机数 0~10
function ran10() {
  return Math.round(Math.random() * 10)
}

// 向量构造函数
function Vector(fun, row = 2) {
  let arr = []
  if (row > 3) {
    return arr = null
  }
  for (let i = 0; i < row; i++) {
    arr[i] = fun ? fun() : 0
  }
  return arr
}

// 向量的点乘
function vectorDotProduct(vector1, vector2) {
  if (vector1.length !== vector2.length) return
  let sum = 0
  for (let i = 0; i < vector1.length; i++) {
    sum += vector1[i] * vector2[i]
  }
  return sum
}

// 向量的大小
function vectorLength(vector) {
  let sum = 0
  let length = 0
  for (let i = 0; i < vector.length; i++) {
    sum += vector[i] * vector[i]
    length = Math.pow(sum, 0.5)
  }
  return length
}

// 向量的夹角
function vectorAngle(vector1, vector2) {
  let result = Math.acos(vectorDotProduct(vector1, vector2)
    / (vectorLength(vector1) * vectorLength(vector2))) * 180 / Math.PI
  return result
  // return Math.acos(vectorDotProduct(vector1, vector2)
  // / (vectorLength(vector1) * vectorLength(vector2))) / 180 / Math.PI
}

// 向量的叉乘
function vectorCrossProduct() {

}

// 测试
let vector1 = new Vector(ran10,)
let vector2 = new Vector(ran10,)
console.log('vector1 = ', vector1)
console.log('vector2 = ', vector2)
console.log('vector1 · vector2 = ', vectorDotProduct(vector1, vector2))
console.log('|vector1| = ', vectorLength(vector1))
console.log('|vector2| = ', vectorLength(vector2))
console.log('θ = ', vectorAngle(vector1, vector2), '°'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值