向量点积与叉积等几何的定义及应用研究

2023-11-14

要计算两个向量的点积,需要将两个向量的对应分量相乘,然后再将乘积相加。下面这段代码可以计算出两个二维向量的点积:

var dotProduct = vectorOne.x * vectorTwo.x +vectorOne.y * vectorTwo.y; 
计算两个向量之间的点积是很简单的,不过,这个点积的意义理解起来可就有些不太直观了。首先请注意,与两个向量的加减法运算结果不同,点积不是向量。专业人员把这种值叫做“标量”(scalar,也叫“纯量”),就是说,它仅仅是个数字而已。

一,向量点积与叉积的定义

向量的点积:
假设向量u(uxuy)和v(vxvy),uv之间的夹角为α,从三角形的边角关系等式出发,可作出如下简单推导:
  |u - v||u - v| = |u||u| + |v||v| - 2|u||v|cosα   
===>
  (ux - vx2 + (uy - vy)2  uxuy2 +vx2+vy2- 2|u||v|cosα 
===>
   -2uxvx - 2uyvy = -2|u||v|cosα
===>
   cosα = (uxvx + uyvy) / (|u||v|)
这样,就可以根据向量uv的坐标值计算出它们之间的夹角。
定义uv的点积运算: u . v = (uxvx + uyvy),

上面的cosα可简写成: cosα = u . v / (|u||v|)
u . v = 0时(即uxvx + uyvy = 0),向量uv垂直;当u . v > 0时,uv之间的夹角为锐角;当u . v < 0时,uv之间的夹角为钝角。
可以将运算从2维推广到3维。


两个单位向量的点积得到两个向量夹角的cos值,通过它可以知道两个向量的相似性,利用点积可判断一个多边形是否面向摄像机还是背向摄像机。


向量的叉积:
假设存在向量u(uxuyuz), v(vxvyvz), 求同时垂直于向量uv的向量w(wxwywz).
因为wu垂直,同时wv垂直,所以w . u = 0, w . v = 0; 即
uxwx + uywy + uzwz = 0;
vxwx + vywy + vzwz = 0;
分别削去方程组的wywx变量的系数,得到如下两个等价方程式:


(uxvy - uyvx)wx = (uyvz - uzvy)wz
(uxvy - uyvx)wy = (uzvx - uxvz)wz
于是向量w的一般解形式为:


w = (wxwywz) = ((uyvz - uzvy)wz / (uxvy - uyvx), (uzvx - uxvz)wz / (uxvy - uyvx), wz)
  = (wz / (uxvy - uyvx) * (uyvz - uzvyuzvx - uxvzuxvy - uyvx))
因为:


   ux(uyvz - uzvy) + uy(uzvx - uxvz) + uz(uxvy - uyvx)
 = uxuyvz - uxuzvy + uyuzvx - uyuxvz + uzuxvy - uzuyvx
 = (uxuyvz - uyuxvz) + (uyuzvx - uzuyvx) + (uzuxvy - uxuzvy)   
 = 0 + 0 + 0 = 0
   vx(uyvz - uzvy) + vy(uzvx - uxvz) + vz(uxvy - uyvx)   
 = vxuyvz - vxuzvy + vyuzvx - vyuxvz + vzuxvy - vzuyvx
 = (vxuyvz - vzuyvx) + (vyuzvx - vxuzvy) + (vzuxvy - vyuxvz)
 = 0 + 0 + 0 = 0
由此可知,向量(uyvz - uzvyuzvx - uxvzuxvy - uyvx)是同时垂直于向量uv的。
为此,定义向量u = (uxuyuz)和向量 v = (vxvyvz)的叉积运算为:u x v = (uyvz - uzvyuzvx - uxvzuxvy - uyvx)
上面计算的结果可简单概括为:向量x v垂直于向量uv

根据叉积的定义,沿x坐标轴的向量i = (1, 0, 0)和沿y坐标轴的向量j = (0, 1, 0)的叉积为:
 i x j = (1, 0, 0) x (0, 1, 0) = (0 * 0 - 0 * 1, 0 * 0 - 1 * 0, 1 * 1 - 0 * 0) = (0, 0, 1) = k
同理可计算j x k:
 j x k = (0, 1, 0) x (0, 0, 1) = (1 * 1 - 0 * 0, 0 * 0 - 0 * 1, 0 * 0 - 0 * 0) = (1, 0, 0) = i
以及k x i:
 k x i = (0, 0, 1) x (1, 0, 0) = (0 * 0 - 1 * 0, 1 * 1 - 0 * 0, 0 * 0 - 0 * 0) = (0, 1, 0) = j
由叉积的定义,可知:
 v x u = (vyuz - vzuyvzux - vxuzvxuy - vyux) = - (u x v)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向量点积与叉积等几何的定义及应用研究 的相关文章

  • Unity C++ 底层渲染(low level) plugin

    Unity C 底层渲染 plugin 1 Android Unity Render 1 1 android handle all the process 1 2 unity handle all the process 1 3 andro
  • 一步一步带您体验Windows Vista安装图解全过程

    一步一步带您体验Windows Vista安装图解全过程 Windows Vista系统安装完全图解 前言 Windows Vista Codename Longhorn 怕是盖子大叔怕 longhorn 这个名称让微软下一代的作系统继续难
  • .PLY文件格式剖析(二)

    在很多书上介绍的三维图形数据都是 obj 3ds格式 dxf等格式的 真正讲解如何读取的就只有 obj格式文件的 但是我现在所做的内容 要求从 ply文件中读取初始塞维图形数据 这我就不会了 虽然对 ply文件格式有了了解 Ply文件格式是
  • 视讯技术基础知识介绍——基础篇(一)

    1 1 图形 图像和视频 图形 graphic 和图像与视频不同 有一种说法是图形就是自然界的客观世界不存在的图案 对于计算机中的图形研究 有专门的计算机图形学 主要的研究对象是点 线 面等抽象事物 目前所谓的计算机显卡3D技术支持 主要就
  • GLSL学习笔记

    From http apps hi baidu com share detail 19177385 GLSL语言内置的变量 包括内置的顶点属性 attribute 一致变量 uniform 易变变量 varying 以及常量 const 一
  • 基于OpenCV细胞识别计数

    OpenCV提供了充分的对外接口 可以方便的进行图像识别 用到的函数有 cvSmooth 图像过滤 这里用到的是高斯平滑 void cvSmooth const CvArr src CvArr dst int smoothtype CV G
  • 解决不能启动redhat 9的图形界面的办法

    故障现象 我才装了几天的linux就进不去linux的图形界面了 我用的是redhat9 希望大虾们帮帮我 在这里说声谢谢了 我把出错的提示给出来 我可以进去命令行界面 当我打入startx命令的时候 画面就变得很花 我以前是可以进的 然后
  • 使用setStyleSheet来设置图形界面的外观

    关于QPushButton的问题 hover press我用setStyleSheet为一个QPushButton贴了一个背景图片 但是 当点了按钮之后 会出现虚线框 这样看起来就很丑 不逼真了 我不希望这个虚线框出现 有什么好的解决方法吗
  • R语言实战笔记--第十一章 中级绘图之散点、气泡、相关、马赛克

    R语言实战笔记 第十一章 中级绘图之散点 气泡 相关 马赛克 标签 空格分隔 R语言 绘图方法 散点图 气泡图 相关图 马赛克图 R语言实战中的中级绘图包括了散点图 气泡图 拆线图 相关图和马赛克图 主要讲述的是二元和多元关系的图形表述 散
  • 2D平面中关于矩阵(Matrix)跟图形变换的讲解

    原文 http blog csdn net linmiansheng article details 18801947 在二维平面上 常用的有以下三种基本的图形变化 1 Translation 2 Scale 3 Rotation 在And
  • Android 3.0 SDK中新增API详解

    Android 3 0 SDK中新增了哪些API呢 我们总结下平板系统honeycomb中的新特性 首先需要澄清的是经过eoeAndroid发现设置模拟器的分辨率到普通WVGA这样的解析度时平板的特性自动消失和Android 2 3没有什么
  • python 实现GUI(图形用户界面)编程

    Python支持多种图形界面的第三方库 包括 wxWidgets Qt GTK Tkinter Tkinter 模块 Tk 接口 是 Python 的标准 Tk GUI 工具包的接口 Tk 和 Tkinter 可以在大多数的 Unix 平台
  • 3D引擎--可移植到Android的开源的引擎

    随着android在全球的风靡 越来越多的人将自己的目光投向搭载android的 移动设备 但由于手持设备的局限性 怎样利用有限的资源来达到很好的体验 是设备厂商必须要考虑的问题 其中炫目的界面就是可以增加用户体验的一种方式 这其中 3D效
  • 如何在visio中画虚线框以及如何解决将visio图形复制到word文档中虚线变为实线的问题

    这两个问题都不是什么复杂的事情 但是如果对visio用的不多或者只是临时用起来碰到了这种问题还真是麻烦事儿 问题1 如何在visio中画虚线框 在上方的按钮中找到矩形工具那个按钮 对 点一下就可以在作图区画出来一个矩形了 可是这个矩形默认的
  • 使用Flex图表组件

    使用Flex图表组件 以图表或是图的方式显示数据的能力可以使得Flex程序用户的数据交互更为容易 与仅显示简单的数字数据表不同 我们可以显示条状图 饼图 线图或是其他类型的图表 并且可以使用颜色 标题以及二维图形来表示我们的数据 在这一部分
  • Vulkan【15】图形管线(Graphics Pipline)

    创建图形管线 本节的代码是 14 init pipeline cpp 你越来越接近把这些拉到一起来渲染一个立方体 下一步是通过设置图形管道来配置GPU来进行渲染 一个图形管线由着色阶段 管线布局 渲染过程和固定功能管线阶段组成 您在前面的部
  • Shader入门指南

    Unity3D Shader入门指南 一 分类 Unity3d2014 04 28 17 40 16人阅读 评论 0 收藏 举报 unity3dShader3d渲染 目录 本文转载自 http onevcat com 2013 07 sha
  • 深入探索透视投影变换(续)

    潘宏 2009 4 14 本人水平有限 疏忽错误在所难免 还请各位数学高手 编程高手不吝赐教 email popyy netease com B站专栏 https b23 tv oWsl6PD 在上一篇文章中我们讨论了透视投影变换的原理 分
  • 利用cygwin编译cholmod以获得在windows上可用的库lib

    原文http blog parlin me complie cholmod to get library for win64 记录要点 cygwin好好装 希望哪位神人能够提供一个好用的cygwin国内mirror 编译cholmod的时候
  • 常用电子元器件简介

    一 电阻器 电阻器 一般情况下也称电阻 是一种阻碍电流在电路中流动的线性元件 也是组成电子电路的主要元件之一 1 电阻器的作用及电路图形符号 1 电阻器的作用 电阻器主要用于控制电路中的电压和电流 除了具有降压 分压 限流和分流作用外 还具

随机推荐

  • CSS深入理解之line-height

    以下文字整理自慕课网 张鑫旭的 CSS深入理解之line height 我看到不时有人点赞收藏这篇文章 我想应该也有很多人是对line height 和vertical align 困惑吧 你们可以去看下这篇文章 上面有我学习vertica
  • texstudio更新记录

    Ubuntu20 04 更新TexStudio 本着不折腾不舒服的原则 准备更新texstudio 原版本2 12 22 texstudio网站上是没找到Ubuntu的 只有xubuntu版本的安装包 既然推荐用ppa方式 那就试试 点开紫
  • Windows Server间文件实时备份(syncthing) ---带历史版本“后悔药”

    一 概念简介 syncthing 一款开源免费的数据同步工具 基于P2P的跨平台文件同步工具 通过tcp建立设备连接 再通过TLS进行数据安全传输 支持公网与局域网搭建 支持单双向同步与历史版本控制 后悔药 支持Android Linux
  • go 进阶 三方库之 gorm

    目录 一 初始化 二 增删改查示例 Save与Update区别 GORM中的钩子 GORM Context支持 GORM 与锁 GORM的预加载Preload与Joins 查询时优雅的处理动态条件 分页 gorm io plugin扩展包
  • 【DFS】1905. 统计子岛屿

    1905 统计子岛屿 解题思路 如果两个岛屿的点不一样 说明grid2这个岛屿一定不是子岛屿 然后淹没i j 以及相邻的土地 现在grid2 剩下的岛屿 全部都是子岛屿 计算岛屿的数量 dfs计算陆地数量 class Solution pu
  • java类本身自己,如何在数据库中使用自己的 Java 类?

    如何在数据库中使用自己的 Java 类 Java 语言比 SQL 更强大 Java 是一种面向对象的语言 因此它的指令 源代码 采用类的形式 要在数据库中执行 Java 应在数据库外编写 Java 指令并在数据库外将它们编译为已编译的类 字
  • 2022秋招笔试加面经合集,不区分公司,不定期更新

    9 9日mark 秋招陆陆续续开始 我自己的定位首先是国企然后是互联网企业 这里把面试和笔试整理下 攒人品 废话不多说开始 首先说一下简历吧 很多同学可能投后台 测试 算法都是一个简历 这样对自己来说是很方便 但是用通用的简历就会导致面试官
  • keil 4单片机程序的debug调试

    1 单击keil4窗口的调试按钮快捷图标 进入到软件模拟调试模式 如图所示 在软件调试模式下 可以设置断点 单步 全速 进入某个函数内部运行 还可以查看变量的变化过程 模拟硬件IO口电平变化 查看代码执行时间等 先了解一下调试按钮的功能 其
  • KMP算法详解(参考代码随想录)

    KMP算法详解 参考代码随想录 KMP的经典思想 当出现字符串不匹配时 可以记录一部分之前已经匹配的文本内容 利用这些信息避免从头再去做匹配 前缀表 前缀表是用来回退的 它记录了模式串与主串 文本串 不匹配的时候 模式串应该从哪里开始重新匹
  • 【每日一学】浮动IP

    在集群或者主备双机场景 对服务使用者而言期望的只有一个IP或域名 这个时候需要的就是浮动IP 一 主备实现 利用单个网卡绑定多个ip地址的技术和crontab自动执行技术 为主机的网卡多绑定一个静态ip 如124 158 26 32 这个地
  • MySQL锁定状态查看相关命令

    1 SHOW PROCESSLIST 显示哪些线程正在运行 只列出前100条 SHOW FULL PROCESSLIST 列出所有线程信息 如果您有SUPER权限 您可以看到所有线程 否则 您只能看到您自己的线程 也就是 与您正在使用的My
  • SpringBoot项目在logback.xml中读取配置中的日志路径问题

    一 问题 在SpringBoot项目 使用logback xml中配置日志的存储位置时 读取application properties或application yml中配置的路径 在logback xml中引用如下
  • PCB 经验

    1 CPU或是关键的IC放在PCB的board中间 目的是有足够空间布线 2 CPU和内寸之间走线一般要做等长走线 长度也要考虑是否够绕线 3 时钟芯片尽量靠近CPU 并远离其它敏感信号 4 CPU的复位电路尽量远离时钟以及其它高速信号 5
  • JS 闭包问题

    var result function foo1 var i 0 for i lt 3 i i 1 result i function j return function console log log 111 gt j i foo1 re
  • gtest里面的断言EXPECT_EQ和ASSERT_EQ的区别

    tips 主要用于记录工作中遇到的问题及解决方案 最近刚开始使用gtest 对里面的断言EXPECT EQ和ASSERT EQ的区别有疑惑 故记录下来 以备后续查看 TEST Binary test std string strPath O
  • Proxy error Could not proxy request错误解决

    原因 跨域 解决 package json文件中的scripts调试添加 start node index js server nodemon index js ignore client
  • 1787. 使所有区间的异或结果为零

    1787 使所有区间的异或结果为零 难度困难72 给你一个整数数组 nums 和一个整数 k 区间 left right left lt right 的 异或结果 是对下标位于 left 和 right 包括 left 和 right 之间
  • mysql触发器和存储过程

    mysql触发器和存储过程 什么是触发器 创建触发器 创建触发器的语法 BEGIN END 触发器经典案例 查看触发器 删除触发器 存储过程简介 mysql存储过程的创建 语法 参数 变量 变量赋值 注释 存储过程的管理 什么是触发器 触发
  • Retrofit统一异常处理

    一 杂谈 前一阵子博客备案因为名字问题被驳回了两次也是够了 现在在公司里一直写业务代码 这让本来就不会的算法的我算法水平更加烂 最近在跟着优酷上的一个小姐姐学魔方 智商跟不太上了啊哈哈哈哈哈 OK 步入正题 名字叫Retrofit异常处理
  • 向量点积与叉积等几何的定义及应用研究

    要计算两个向量的点积 需要将两个向量的对应分量相乘 然后再将乘积相加 下面这段代码可以计算出两个二维向量的点积 var dotProduct vectorOne x vectorTwo x vectorOne y vectorTwo y 计