叉积和法向量学习笔记

目录

叉积用的内积

相似点

给定平面上的两个向量 A 和 B,叉积和法向量相等吗

理解这点的关键:

结论:

叉积判断平面内两个向量是否相交


叉积(Cross Product)和法向量(Normal Vector)确实有一些相似之处,尤其是在计算和应用方面。以下是它们的主要相似点:

叉积用的内积

相似点

  1. 三维空间中的关联性

    • 叉积主要在三维空间中定义和应用。
    • 法向量通常也是在三维空间中定义的,特别是在描述平面或曲面时。
  2. 计算方法

    • 叉积是计算两个向量的乘积,其结果是一个向量,该向量垂直于原来的两个向量所在的平面。
    • 法向量可以通过两个非平行向量的叉积来计算。例如,给定平面上的两个向量 AB,它们的叉积 A × B 就是该平面的一个法向量。
  3. 方向

    • 叉积结果的方向由右手定则确定,垂直于参与叉积的两个向量。
    • 法向量的方向也是垂直于描述的表面,可以通过右手定则来确定它的具体方向。
  4. 应用

    • 叉积广泛用于计算物理学中的力矩、角动量等问题。
    • 法向量在计算几何中用于确定平面的方向、计算光线与表面的交点、反射和折射等问题。

给定平面上的两个向量 A 和 B,叉积和法向量相等吗

在三维空间中,给定平面上的两个向量 AB,它们的叉积 A × B 与这个平面的法向量具有相同的方向,但其大小(长度)可能不同,因此它们在数学上并不是完全相等的,但方向相同。

理解这点的关键:

  1. 方向

    • 叉积 A × B 的方向是垂直于向量 AB 所在的平面。根据右手定则,若用右手的食指指向 A,中指指向 B,则叉积 A × B 的方向由拇指指向,这个方向就是法向量的方向。
  2. 大小

    • 叉积 A × B 的大小等于 AB 的长度乘积再乘以它们夹角的正弦值: ∥A×B∥=∥A∥∥B∥sin⁡(θ)\|\mathbf{A} \times \mathbf{B}\| = \|\mathbf{A}\| \|\mathbf{B}\| \sin(\theta)∥A×B∥=∥A∥∥B∥sin(θ) 其中 θ\thetaθ 是向量 AB 之间的夹角。
    • 法向量的大小可以是任意的,因为法向量的关键属性是它的方向,而不是它的大小。

结论:

  • 相同方向:叉积 A × B 和法向量的方向相同,都是垂直于 AB 所在的平面。
  • 大小不同:叉积 A × B 的大小依赖于 AB 的长度及其夹角的正弦值,而法向量的大小可以缩放到任意值。

因此,可以说叉积 A × B 是法向量的一个实例,但大小可能不同。通俗地说,叉积给出了一个特定大小的法向量,但平面的法向量可以是任何大小,只要方向一致即可。

叉积判断平面内两个向量是否相交

def cross_product_sign(A, B, C):"""计算向量 AB 和 AC 的叉积的符号。参数:A, B, C: 二维平面上的点,格式为 (x, y)返回值:叉积的符号:正数、负数或零"""return (B[0] - A[0]) * (C[1] - A[1]) - (B[1] - A[1]) * (C[0] - A[0])def is_point_on_segment(P, A, B):"""判断点 P 是否在线段 AB 上。参数:P, A, B: 二维平面上的点,格式为 (x, y)返回值:True 表示点 P 在线段 AB 上,False 表示不在"""return min(A[0], B[0]) <= P[0] <= max(A[0], B[0]) and min(A[1], B[1]) <= P[1] <= max(A[1], B[1])def do_segments_intersect(A, B, C, D):"""判断两个线段 AB 和 CD 是否相交。参数:A, B, C, D: 二维平面上的点,格式为 (x, y)返回值:True 表示线段相交,False 表示不相交"""# 计算叉积的符号d1 = cross_product_sign(A, B, C)d2 = cross_product_sign(A, B, D)d3 = cross_product_sign(C, D, A)d4 = cross_product_sign(C, D, B)# 检查叉积符号是否不同if d1 * d2 < 0 and d3 * d4 < 0:return True# 特殊情况:线段共线并重叠if d1 == 0 and is_point_on_segment(C, A, B):return Trueif d2 == 0 and is_point_on_segment(D, A, B):return Trueif d3 == 0 and is_point_on_segment(A, C, D):return Trueif d4 == 0 and is_point_on_segment(B, C, D):return Truereturn False# 示例线段
A = (1, 1)
B = (4, 4)
C = (1, 4)
D = (4, 1)# 判断线段是否相交
print("线段 AB 和 CD 是否相交:", do_segments_intersect(A, B, C, D))  # 输出 True# 不相交的示例
E = (1, 1)
F = (2, 2)
G = (3, 3)
H = (4, 4)print("线段 EF 和 GH 是否相交:", do_segments_intersect(E, F, G, H))  # 输出 False

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js 给数组对象添加多个属性

// 假设有一个数组对象 let items [{ id: 1, name: Item 1 },{ id: 2, name: Item 2 },{ id: 3, name: Item 3 } ];// 要添加的新属性 const newProps {newProp1: value1,newProp2: value2 };// 使用map方法添加新属性 let updatedItems items.map(item > ({ ...item, ..…

什么是AI应用开发

&#x1f9d9;‍♂️ 诸位好&#xff0c;吾乃斜杠君&#xff0c;编程界之翘楚&#xff0c;代码之大师。算法如流水&#xff0c;逻辑如棋局。 &#x1f4dc; 吾之笔记&#xff0c;内含诸般技术之秘诀。吾欲以此笔记&#xff0c;传授编程之道&#xff0c;助汝解技术难题。 &#…

【AR开发-开源框架】使用Sceneform-EQR快速开发AR应用,当前接入了AREngine、ORB-SLAM,可快速地适配不同的安卓设备

Sceneform-EQR Sceneform 概览 Sceneform是一个3D框架&#xff0c;具有基于物理的渲染器&#xff0c;针对移动设备进行了优化&#xff0c;使您可以轻松构建增强现实应用程序&#xff0c;而无需OpenGL。 借助 Sceneform&#xff0c;您可以轻松地在 AR 应用和非 AR 应用中渲染…

音乐版权NFT开发流程

开发音乐版权NFT&#xff08;非同质化代币&#xff09;的流程涉及多个步骤&#xff0c;从概念化和版权管理到技术实现和市场推广。以下是一个详细的开发流程指南。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.概念化与规划 定义…

使用git

解决参考如下链接 git设置全局用户名和邮箱以及删除方式

【Qt系列教程】一、认识Qt、安装Qt、运行Hello Qt

文章目录 1.1 Qt 简介1.2 Qt 的安装1.3 编写 Hello World 1.1 Qt 简介 Qt&#xff08;官网&#xff1a;https://www.qt.io&#xff09;于1995年5月首次公开发布&#xff0c;是一个跨平台的应用程序开发框架&#xff0c;也是最主流的 C 开发框架&#xff1b; Qt 具有其他编程…

【全开源】考试答题系统源码(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的小程序答题考试系统&#xff0c;提供全部前后台无加密源代码&#xff0c;支持私有化部署。 &#x1f4dd;考试答题系统&#xff1a;便捷高效的学习新选择&#x1f4a1; &#x1f4da; 考试答题系统是什么&#xff1f; 考试答题系统&…

【Transformer(7)】Transformer架构解析

一、Transformer结构图 从上图可以看到&#xff1a; Transformer结构主要由编码和解码两大部分组成&#xff1a; &#xff08;1&#xff09;输入- position embedding - patch embedding &#xff08;2&#xff09;编码器 多头注意力机制 Add & NormMLP Add & Norm &…

怎么判断护眼台灯真的有用吗?揭秘护眼台灯怎么选!

中国目前面临着严重的近视问题&#xff0c;各学段学生的近视率普遍偏高&#xff0c;且高度近视的占比也不容忽视。这不仅对学生的身体健康构成威胁&#xff0c;也对国家的经济社会可持续发展和国家安全构成潜在风险。随着时代的进步和教育的普及&#xff0c;儿童近视的问题已经…

Ubuntu Todesk远程连接一直卡在100%

关于Todesk远程Linux卡在连接服务器的解决方案 在网上看到很多篇文章都说改硬解码什么的 反正我试过是没用 下面是我的解决方案 编辑下面的文件 sudo vim /etc/gdm3/custom.conf 这里如果大家不会使用 vim 退出 1. 按一下ESC键 2. 同时按住shfit: 3. 输入wq 4. 回车重启系…

植物大战僵尸杂交版全平台 PC MAC 安卓手机下载安装详细图文教程

最近植物大战僵尸杂交版非常的火&#xff0c;好多小伙伴都想玩一玩&#xff0c;但作者只分享了 win 版&#xff0c;像手机还有MAC电脑都没有办法安装&#xff0c;身为 MAC 党当然不能放弃&#xff0c;经过一番折腾&#xff0c;也是成功在所有平台包括手机和MAC电脑都成功安装上…

新闻发稿:8个新闻媒体推广中最常见的错误-华媒舍

在数字时代&#xff0c;新闻媒体的推广手段已经越来越多样化。许多媒体在推广过程中常常会犯下一些常见错误。本文将会介绍八个新闻媒体在推广中最常见的错误&#xff0c;并希望能够帮助各位更好地规避这些问题。 1. 缺乏明确的目标受众 在进行推广前&#xff0c;新闻媒体需要…

有钱还系统源码,人人还众筹还钱模式还贷系统源码

盈利模式&#xff1a; 1.系统里直推400 2.间推得200 3.升级是隔代匹配200 4.漏单直接设置归系统 5.九级匹配不到直接归平台 有钱还平台新注册会员&#xff0c;即新入的负债者要分9次分别资助先来的11名负债者每人200元&#xff0c;这笔资助不是一次性给到对方&#xff0c…

docker学习--最详细的docker run 各子命令解释与应用

文章目录 docker run应用docker run -it那怎样才能退出容器而不用容器关闭呢 docker run -d-p-P--name docker run 容器运行命令 docker run 常见的子命令及其含义 -i 交互式&#xff0c;和-t一起使用 -t 打开一个终端 -d 后台运行 -p/-P 暴露容器中的服务端口 –name 指定容…

速通systemverilog

这里写目录标题 一、systemverilog的大部分新语法logicalways_combunique_casepriority casealways_fftypedefstructenumunioninterface 二、实现流水灯三、全加器以及仿真 一、systemverilog的大部分新语法 logic always_comb unique_case priority case case中常量和变量互…

对HTTP和HTTPS的介绍

HTTP HTTP 是什么&#xff1f; HTTP (全称为 “超⽂本传输协议”) 是⼀种应⽤⾮常⼴泛的 应用层协议. 所谓 “超⽂本” 的含义, 就是传输的内容不仅仅是⽂本(⽐如 html, css 这个就是⽂本), 还可以是⼀些其他的资源, ⽐如图⽚, 视频, ⾳频等⼆进制的数据 HTTP 往往是基于传输层…

重学java 52.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…

YOLOv10(1):初探,训练自己的数据

目录 1. 写在前面 2. 值得关注的点 3. 训练自己的数据集 4. 阅读代码的小建议 1. 写在前面 很多人YOLOv9还没有完全研究透&#xff0c;YOLOv10出来了。 惊不惊喜&#xff0c;意不意外&#xff01; 据论文里提到&#xff0c;YOLOv10就是为了加速推理&#xff0c;在保证精度的…

深入分析 Android BroadcastReceiver (二)

文章目录 深入分析 Android BroadcastReceiver (二)1. 深入理解 BroadcastReceiver 的高级使用和优化2. 有序广播&#xff08;Ordered Broadcasts&#xff09;2.1 实现有序广播 3. 粘性广播&#xff08;Sticky Broadcasts&#xff09;3.1 使用粘性广播 4. 本地广播&#xff08;…

VSCode插件Sort Lines

Sort Lines是一款VSCode中的扩展&#xff0c;可以帮助你对所选文本或整个文件中的行进行排序。可以给你按字母大小排序&#xff08;升序、降序&#xff09;&#xff0c;也可以进行排序去重。而且还能将所有文本打乱顺序。做短文本分类的训练&#xff0c;清洗数据集的时候&#…