点积与叉积
- 格式:pdf
- 大小:439.06 KB
- 文档页数:31
向量乘法的几何意义
向量乘法的几何意义是用于描述向量之间的乘积的几何特征。
向量乘法有两种不同的乘积,分别是点积和叉积。
点积表示的是两个向量之间的夹角以及它们的长度的乘积,而叉积则表示的是两个向量之间所围成平行四边形的面积。
这些几何特征可以帮助我们更好地理解向量的性质和行为。
对于点积,它可以用来计算两个向量之间的夹角。
当两个向量的点积为正数时,它们之间的夹角是锐角;当点积为负数时,它们之间的夹角是钝角;当点积为零时,它们之间的夹角是直角。
此外,点积还可以用于计算向量在某个方向上的投影。
具体而言,如果向量A在向量B上的投影为C,那么向量C的长度等于向量A与向
量B之间的夹角的余弦值与向量A的长度的乘积。
对于叉积,它可以用于计算两个向量之间所围成平行四边形的面积。
具体而言,如果向量A和向量B的叉积为C,那么向量C的长度等于向量A和向量B所围成
的平行四边形的面积。
此外,叉积还可以用于计算向量之间的垂直关系。
具体而言,如果向量A和向量B的叉积为C,那么向量C与向量A和向量B都垂直。
在实际应用中,向量乘法具有广泛的应用。
例如,在物理学中,点积和叉积可以用于计算力和力矩;在计算机图形学中,点积和叉积可以用于计算三维图形的法向量和表面积;在机器学习中,点积可以用于计算两个向量之间的相似度。
因此,了解向量乘法的几何意义对于理解这些应用非常重要。
向量点乘向量
向量的点乘怎么算?
在线性代数中,两个向量相乘有几种不同的定义,其中最常见的为点积(内积)和叉积(外积)。
1. 点积(内积):
- 定义:对于两个n维向量a和b,它们的点积(内积)被定义为两个向量对应元素的乘积之和。
点积通常用符号"·" 表示。
- 公式:a ·b = a₁b₁+ a₂b₂+ ... + aₙbₙ
- 示例:假设有两个向量a = [2, 3] 和b = [4, -1],它们的点积计算如下:
a ·
b = 2·4 + 3·(-1) = 8 - 3 = 5
2. 叉积(外积):
- 定义:对于三维向量,叉积(外积)可以用来计算两个向量所张成平面的法向量,其结果是一个新的向量。
叉积通常用符号"×" 表示。
- 公式:a ×b = [a₂b₃- a₃b₂, a₃b₁- a₁b₃, a₁b₂- a₂b₁]
- 示例:假设有两个向量a = [2, 3, 1] 和b = [4, -1, 5],它们的叉积计算如下:a ×b = [3×5 - 1×1, 1×4 - 2×5, 2×(-1) - 3×4] = [14, -6, -11]
这些向量相乘的公式可以应用于各种数学和物理问题中,例如计算两个向量的夹角、平面的法向量以及向量的投影等。
根据具体情况,选择适当的向量相乘操作可以得到所需的结果。
向量内积(点乘)和外积(叉乘)概念及⼏何意义向量的内积(点乘)定义概括地说,向量的内积(点乘/数量积)。
对两个向量执⾏点乘运算,就是对这两个向量对应位⼀⼀相乘之后求和的操作,如下所⽰,对于向量a和向量b:a和b的点积公式为:这⾥要求⼀维向量a和向量b的⾏列数相同。
注意:点乘的结果是⼀个标量(数量⽽不是向量)定义:两个向量a与b的内积为 a·b = |a||b|cos∠(a, b),特别地,0·a =a·0 = 0;若a,b是⾮零向量,则a与b****正交的充要条件是a·b = 0。
向量内积的性质:1. a^2 ≥ 0;当a^2 = 0时,必有a = 0. (正定性)2. a·b = b·a. (对称性)3. (λa + µb)·c = λa·c + µb·c,对任意实数λ, µ成⽴. (线性)4. cos∠(a,b) =a·b/(|a||b|).5. |a·b| ≤ |a||b|,等号只在a与b共线时成⽴.向量内积的⼏何意义内积(点乘)的⼏何意义包括:1. 表征或计算两个向量之间的夹⾓2. b向量在a向量⽅向上的投影有公式:推导过程如下,⾸先看⼀下向量组成:定义向量c:根据三⾓形余弦定理(这⾥a、b、c均为向量,下同)有:根据关系c=a-b有:即:向量a,b的长度都是可以计算的已知量,从⽽有a和b间的夹⾓θ:进⽽可以进⼀步判断两个向量是否同⼀⽅向或正交(即垂直)等⽅向关系,具体对应关系为:向量的外积(叉乘)定义概括地说,两个向量的外积,⼜叫叉乘、叉积向量积,其运算结果是⼀个向量⽽不是⼀个标量。
并且两个向量的外积与这两个向量组成的坐标平⾯垂直。
定义:向量a与b的外积a×b是⼀个向量,其长度等于|a×b| = |a||b|sin∠(a,b),其⽅向正交于a与b。
叉积点积公式叉积和点积可是数学中很有趣的概念呢!咱们先来聊聊点积。
点积,也叫数量积,它反映了两个向量在方向上的“重合程度”。
比如说,有两个向量 A = (x₁, y₁) 和 B = (x₂, y₂) ,那它们的点积就是x₁ * x₂ + y₁ * y₂。
我记得有一次在课堂上,为了让同学们更好地理解点积,我给他们举了一个特别好玩的例子。
当时我就说:“假设你和你的小伙伴一起搬东西,你使的力是一个向量,你小伙伴使的力是另一个向量。
那点积呢,就像是你们俩力气往同一个方向使的那部分效果。
如果你们方向一致,点积就大,说明一起干的效果好;要是方向相反,点积就小甚至是负数,这说明你们俩在互相‘捣乱’呢!”同学们听了都哈哈大笑,但是也一下就明白了点积的含义。
再来说说叉积。
叉积的结果是一个向量,而且这个向量和原来的两个向量都垂直。
对于向量 A = (x₁, y₁, z₁) 和 B = (x₂, y₂, z₂) ,它们的叉积是 (y₁ * z₂ - y₂ * z₁, z₁ * x₂ - z₂ * x₁, x₁ * y₂ - x₂ * y₁) 。
想象一下,你在一个三维空间里,有两个向量像是两只交叉的手臂,而叉积得到的向量就像是从它们交叉的地方“长”出来的新家伙,而且还和原来那两只手臂都“不对付”,直直地立在那里。
在实际应用中,点积和叉积都特别有用。
比如在物理学中,计算力做的功就要用到点积;而在计算机图形学里,判断两个向量的相对位置关系可能就得靠叉积。
点积和叉积的公式看起来可能有点复杂,但只要多做几道题,多想想实际的例子,其实也没那么难。
就像学骑自行车,一开始可能摇摇晃晃,但多练几次,掌握了平衡的技巧,就能轻松上路啦!总之,叉积和点积虽然是数学中的概念,但它们和我们的生活、和各种实际的应用都紧密相连。
只要我们用心去理解,就能发现其中的乐趣和用处。
希望大家通过我的讲解,能对叉积点积公式有更清楚的认识,在数学的海洋里畅游得更欢快!。
判断两个向量位置关系的方法(一)判断两个向量位置关系引言在计算机图形学和计算几何学中,经常需要判断两个向量的位置关系。
本文将介绍一些常用的方法来判断两个向量的位置关系。
方法一:点积•计算两个向量的点积,若点积为0,则说明两个向量垂直;•若点积大于0,则说明两个向量夹角小于90度,且指向同一方向;•若点积小于0,则说明两个向量夹角大于90度,且指向相反方向。
方法二:叉积•计算两个向量的叉积,若叉积为0,则说明两个向量平行;•若叉积大于0,则说明两个向量夹角小于180度,且满足右手法则;•若叉积小于0,则说明两个向量夹角大于180度,且满足右手法则。
方法三:向量投影•将一个向量投影到另一个向量上,计算投影后的长度;•若投影后的长度为0,则说明两个向量垂直;•若投影后的长度大于0,并且小于被投影向量的长度,则说明两个向量夹角小于90度;•若投影后的长度等于被投影向量的长度,则说明两个向量共线;•若投影后的长度大于被投影向量的长度,则说明两个向量夹角大于90度。
方法四:夹角余弦•计算两个向量之间的夹角余弦值;•若夹角余弦值为0,则说明两个向量垂直;•若夹角余弦值大于0,并且小于1,则说明两个向量夹角为锐角;•若夹角余弦值等于1,则说明两个向量夹角为直角;•若夹角余弦值大于-1,并且小于0,则说明两个向量夹角为钝角。
方法五:复数形式•将两个向量分别转换为复数形式的表示;•比较复数的实部和虚部的大小关系,可以得出两个向量的位置关系。
结论通过点积、叉积、向量投影、夹角余弦和复数形式等方法,可以判断并分析两个向量的位置关系。
不同的方法适用于不同的场景和需求,在实际应用中可以根据具体情况选择合适的方法来判断两个向量的位置关系。
注意:本文仅涉及常用的判断方法,并无穷尽之意,读者可以根据需要进一步探索和研究。
方法一:点积•计算两个向量的点积公式为:a·b = ||a|| ||b|| cosθ,其中a·b表示两个向量的点积,||a||和||b||分别表示两个向量的长度,cosθ是两个向量夹角的余弦值。
两向量相乘的坐标公式
两个向量相乘有多种不同的定义,包括数量积(点积)、向量积(叉积)和混合积。
在下面我们将逐一介绍这三种向量相乘的坐标公式。
1.数量积(点积):
数量积(点积)是两个向量之间的一种运算,其结果是一个标量。
两
个向量的数量积的坐标公式如下:
设两个向量A和B的坐标分别为(A₁,A₂,A₃)和(B₁,B₂,B₃),则它们的数
量积(点积)为:
A·B=A₁B₁+A₂B₂+A₃B₃
2.向量积(叉积):
向量积(叉积)是两个向量之间的一种运算,其结果是一个新的向量,该向量垂直于原来两个向量所在的平面。
两个向量的向量积的坐标公式如下:
设两个向量A和B的坐标分别为(A₁,A₂,A₃)和(B₁,B₂,B₃),则它们的向
量积(叉积)为:
A×B=(A₂B₃-A₃B₂,A₃B₁-A₁B₃,A₁B₂-A₂B₁)
3.混合积:
混合积是三个向量之间的一种运算,其结果是一个标量,表示由这三
个向量所组成的平行六面体的有向体积。
设三个向量A、B和C的坐标分别为(A₁,A₂,A₃)、(B₁,B₂,B₃)和
(C₁,C₂,C₃),则它们的混合积为:
(A×B)·C=(A₂B₃-A₃B₂)C₁+(A₃B₁-A₁B₃)C₂+(A₁B₂-A₂B₁)C₃
这些坐标公式是向量相乘的基本公式,在向量运算中非常常见且有广泛的应用。
矢量的乘积矢量的乘积是向量运算中的一种重要操作,它可以用来描述向量之间的关系和相互作用。
在物理学、工程学、计算机科学等领域中,矢量的乘积被广泛应用,具有重要的理论和实际意义。
矢量的乘积有两种形式,分别是点积和叉积。
点积也称为数量积,是两个向量的数量乘积再求和,其结果是一个标量。
点积的计算公式为:A·B=|A||B|cosθ,其中A和B分别为两个向量,|A|和|B|分别为它们的模长,θ为它们之间的夹角。
点积的结果可以用来计算向量之间的夹角、判断向量的正交性、计算向量在某个方向上的投影等。
叉积也称为向量积,是两个向量的叉乘积再求和,其结果是一个向量。
叉积的计算公式为:A×B=|A||B|sinθn,其中A和B分别为两个向量,|A|和|B|分别为它们的模长,θ为它们之间的夹角,n为垂直于A和B所在平面的单位向量。
叉积的结果可以用来计算向量之间的垂直关系、计算向量的面积、计算力矩等。
矢量的乘积在物理学中有着广泛的应用。
例如,在力学中,叉积可以用来计算力矩,即力对物体产生的旋转效应。
在电磁学中,叉积可以用来描述磁场的旋转和感应电动势的产生。
在热力学中,点积可以用来计算功和能量,叉积可以用来计算热力学系统的熵。
在工程学中,矢量的乘积也有着重要的应用。
例如,在机械工程中,叉积可以用来计算机械零件的转动惯量和角动量。
在电子工程中,叉积可以用来计算电路中的电感和电容。
在计算机科学中,矢量的乘积可以用来进行图形处理和计算机视觉等方面的应用。
矢量的乘积是向量运算中的重要操作,具有广泛的应用价值。
通过对矢量的乘积的研究和应用,可以更好地理解和描述物理现象、工程问题和计算机应用等方面的问题,为人类的科学技术进步做出贡献。
点积与叉积的定义和应用一、什么是点积和叉积在三维空间中,点积和叉积是两个很重要的数学概念。
点积也称为内积,表示两个向量之间的相似程度;而叉积也称为外积,描述了两个向量之间的垂直关系。
点积和叉积可以通过在三维空间图像上画出向量来理解。
点积的定义如下所示:设有两个向量a和b,它们的点积表示为a·b,计算方式为a·b=|a||b|cosθ,其中|a|和|b|为向量的模长,θ为向量a和向量b之间的夹角。
叉积的定义如下所示:设有两个向量a和b,它们的叉积表示为a×b,计算方式为a×b=|a||b|sinθn,其中|a|和|b|为向量的模长,θ为向量a和向量b之间的夹角,n为垂直于向量a和向量b所在平面的单位法向量。
二、点积和叉积的应用1.点积的应用由于点积表示两个向量之间的相似程度,所以点积的应用场景也较为广泛。
其中,一些常见的应用包括以下几个方面:(1)确定向量之间的夹角和正交性:由于点积可以计算出两个向量之间的夹角,所以可以用点积来判断向量之间是否垂直,即如果a·b=0,则向量a和向量b垂直。
(2)计算向量的投影:点积还可以用来计算向量在另一向量方向上的投影。
具体地说,设有向量a和向量b,它们之间的夹角为θ,向量a在向量b方向上的投影为projb a,那么有projba=|a|cosθ=b·a/|b|。
(3)计算向量之间的距离:设有向量a和向量b,它们之间的夹角为θ,那么两个向量之间的距离可以表示为d=|a-b|=sqrt(|a|^2+|b|^2-2|a||b|cosθ)。
2.叉积的应用叉积的应用相较于点积稍微少一些,但是叉积仍然是很实用的数学工具。
一些常见的应用包括以下几个方面:(1)计算向量的面积和体积:由于叉积的结果是一个向量,在方向上与原向量垂直,大小等于两个向量围成的平行四边形的面积,所以叉积可以用来计算向量围成的三角形或四边形的面积,以及向量围成的平行六面体的体积。
点积与叉积运算向量运算是线性代数中重要的概念,其中点积和叉积运算是两种常见且有广泛应用的向量运算。
本文将详细介绍点积和叉积的定义、性质以及它们在几何、物理等领域的应用。
一、点积的定义与性质点积,又称内积或数量积,是两个向量之间的一种运算。
对于二维向量(a1, a2)和(b1, b2),点积的定义如下:a ·b = a1 * b1 + a2 * b2对于三维向量(a1, a2, a3)和(b1, b2, b3),点积的定义如下:a ·b = a1 * b1 + a2 * b2 + a3 * b3点积具有以下性质:1. 交换律:a · b = b · a2. 分配律:a · (b + c) = a · b + a · c3. 结合律:k(a · b) = (ka) · b = a · (kb),其中k是一个标量4. 点积与向量长度的关系:a · b = |a| * |b| * cosθ,其中|a|和|b|分别表示向量a和b的长度,θ表示a和b之间的夹角二、点积的应用点积在几何、物理等领域有广泛的应用。
下面分别介绍点积在几何和物理中的应用。
1. 几何应用(1)计算向量的长度:根据点积与向量长度的关系式,可以通过计算点积得到向量的长度。
(2)计算向量之间的夹角:根据点积与向量长度的关系式,可以求解两个向量之间的夹角。
(3)判断两个向量的正交性:如果两个向量的点积为0,则它们垂直或正交。
(4)判断两个向量的夹角关系:根据点积与向量长度的关系式,可以判断两个向量之间的夹角大小与夹角余弦的关系。
2. 物理应用(1)计算力的功:当力F作用在物体上并产生位移s时,力的功定义为W = F · s。
其中,F表示力向量,s表示位移向量,·表示点积运算。
(2)求解力的投影:根据点积与向量长度的关系式,可以将一个向量分解为另一个向量在该向量方向上的投影和垂直于该向量方向上的分量。
向量的四则运算、点积、叉积、正交基向量是数学中的重要概念,它可以表示空间中的点、力、速度等物理量。
向量的运算包括四则运算、点积和叉积,而正交基是向量空间中的一组基底,具有特殊的性质。
本文将依次介绍这些概念及其应用。
1. 四则运算向量的四则运算包括加法、减法、数乘和除法。
对于两个向量的加法,可以将它们的对应分量相加得到新的向量。
减法与加法类似,只需将对应分量相减。
数乘是将一个向量的每个分量都乘以一个常数,得到一个新的向量。
除法则是将一个向量的每个分量都除以一个常数,得到一个新的向量。
2. 点积点积,也称为内积或数量积,是两个向量之间的运算。
点积的结果是一个标量(即一个实数),表示两个向量之间的夹角和长度关系。
点积的计算方法是将两个向量的对应分量相乘,然后将乘积相加。
点积有以下性质:- 对于两个向量a和b,它们的点积满足交换律,即a·b = b·a。
- 如果a·b = 0,那么向量a和b是正交的(垂直的)。
- 如果a·b > 0,那么向量a和b的夹角是锐角。
- 如果a·b < 0,那么向量a和b的夹角是钝角。
点积在物理学中有广泛的应用,比如计算两个力的功、求解向量的投影等。
3. 叉积叉积,也称为外积或向量积,是两个向量之间的运算。
叉积的结果是一个新的向量,它垂直于原来的两个向量,并且长度与两个向量的长度乘积和它们夹角的正弦值成正比。
叉积的计算方法是通过行列式的方式得到。
叉积也有一些特殊性质:- 对于两个向量a和b,它们的叉积满足反交换律,即a×b = -b×a。
- 叉积满足分配律,即a×(b+c) = a×b + a×c。
叉积在物理学和几何学中有重要的应用,比如计算力矩、求解平面的法向量等。
4. 正交基正交基是向量空间中的一组基底,具有特殊的性质。
如果一组向量中的任意两个向量都是正交的(垂直的),并且每个向量的长度都是1,则称这组向量是正交基。
點積與叉積電腦實施運算,通常會有浮點數誤差。
為了避免浮點數誤差,當使用電腦計算幾何問題,會採用不同於一般的數學公式和定理。
點積( dot product )、叉積( cross product )這兩個運算只有加法和乘法,而不包括除法,能夠有效避免除法產生的浮點數誤差,另一方面也能夠減少計算時間。
點積與叉積有著許多好用的特性,大部分的幾何問題,都可以運用點積與叉積來計算答案。
以下都是用二維空間當作範例。
資料結構點積與叉積是向量運算,所以先設計一個向量的資料結構。
1.struct Vector {int x, y;}; // 二維向量的資料結構2.3.// 點積運算4.int dot(Vector& v1, Vector& v2)5.{6.// 沒有除法,儘量避免誤差。
7.return v1.x * v2.x + v1.y * v2.y;8.}9.10.// 叉積運算,回傳純量(除去方向)11.int cross(Vector& v1, Vector& v2)12.{13. // 沒有除法,儘量避免誤差。
14. return v1.x * v2.y - v1.y * v2.x;15.}1.struct Vector {int x, y;}; // 二維向量的資料結構2.3.// 點積運算4.int dot(Vector& v1, Vector& v2)5.{6.// 沒有除法,儘量避免誤差。
7.return v1.x * v2.x + v1.y * v2.y;8.}9.10.// 叉積運算,回傳純量(除去方向)11.int cross(Vector& v1, Vector& v2)12.{13. // 沒有除法,儘量避免誤差。
14. return v1.x * v2.y - v1.y * v2.x;15.}向量資料結構擁有一個座標,並且擁有一支點積函式與一支叉積函式。
兩個向量做點積的結果是一個純量。
兩個向量做叉積的結果為一個向量,然而我們通常只會用到純量部份,所以讓叉積函式的回傳值為純量。
點積、叉積跟長度的關係點積的結果為垂直投影的某種量。
這某種量取絕對值,再除以底向量長度,得到底。
叉積的結果為平行四邊形的面積量。
面積量取絕對值,再除以底向量長度,得到高。
1.struct Point {double x, y;}; // 點的資料結構2.typedef Point Vector; // 向量的資料結構,和點一樣3.4.// 向量的長度5.double length(Vector& v)6.{7.return sqrt(v1.x * v1.x + v2.y * v2.y);8.// return sqrt(dot(v, v));9.}10.11.void base_height(Point p, Point p1, Point p2)12.{13. Vector v1 = p1 - p;14. Vector v2 = p2 - p;15.16. double base = fabs(dot(v1, v2)) / length(v1);17. double height = fabs(cross(v1, v2)) / length(v1);18.}1.struct Point {double x, y;}; // 點的資料結構2.typedef Point Vector; // 向量的資料結構,和點一樣3.4.// 向量的長度5.double length(Vector& v)6.{7.return sqrt(v1.x * v1.x + v2.y * v2.y);8.// return sqrt(dot(v, v));9.}10.11.void base_height(Point p, Point p1, Point p2)12.{13. Vector v1 = p1 - p;14. Vector v2 = p2 - p;15.16. double base = fabs(dot(v1, v2)) / length(v1);17. double height = fabs(cross(v1, v2)) / length(v1);18.}點積、叉積跟角度的關係1.void sin_cos_θ(Point p, Point p1, Point p2)2.{3.Point p, p1, p2;4.Vector v1 = p1 - p, v2 = p2 - p;5.double l1 = length(v1), l2 = length(v2);6.7.double cosθ= dot(v1, v2) / l1 / l2;8.double sinθ= cross(v1, v2) / l1 / l2;9.10. double θ= acos(cosθ); // [0, π]11. double θ= asin(sinθ); // [-π/2, π/2]12.}1.void sin_cos_θ(Point p, Point p1, Point p2)2.{3.Point p, p1, p2;4.Vector v1 = p1 - p, v2 = p2 - p;5.double l1 = length(v1), l2 = length(v2);6.7.double cosθ= dot(v1, v2) / l1 / l2;8.double sinθ= cross(v1, v2) / l1 / l2;9.10. double θ= acos(cosθ); // [0, π]11. double θ= asin(sinθ); // [-π/2, π/2]12.}注意到 acos 與 asin 的回傳值,回傳的結果是弳度量( radian )而非度度量( grade ),而且回傳值的範圍也不同。
一般都以點積與 acos 求得介於 0˚到180˚之間的夾角大小。
點積與向量夾角利用點積的性質,可以粗略判斷夾角大小:點積大於 0 時,兩向量夾角小於 90˚;等於 0 時,夾角等於 90˚;小於零時,夾角大於 90˚且小於 180˚。
1.// 向量oa與向量ob進行點積,判斷∠aob之大小。
2.double dot(Point& o, Point& a, Point& b)3.{4.return (a.x-o.x) * (b.x-o.x) + (a.y-o.y) * (b.y-o.y);5.}1.// 向量oa與向量ob進行點積,判斷∠aob之大小。
2.double dot(Point& o, Point& a, Point& b)3.{4.return (a.x-o.x) * (b.x-o.x) + (a.y-o.y) * (b.y-o.y);5.}叉積與向量旋轉利用叉積的性質,可以粗略判斷夾角方向:叉積大於 0 時,兩向量前後順序為逆時針順序(在 180˚之內);等於 0 時,兩向量平行,也就是指夾角等於 0˚或 180˚;小於 0 時,兩向量前後順序為順時針順序(在 180˚之內)。
1.// 向量oa與向量ob進行叉積,判斷oa到ob的旋轉方向。
2.double cross(Point& o, Point& a, Point& b)3.{4.return (a.x-o.x) * (b.y-o.y) - (a.y-o.y) * (b.x-o.x);5.}1.// 向量oa與向量ob進行叉積,判斷oa到ob的旋轉方向。
2.double cross(Point& o, Point& a, Point& b)3.{4.return (a.x-o.x) * (b.y-o.y) - (a.y-o.y) * (b.x-o.x);5.}UVa 10445Distance程度★難度★Distance以下簡單介紹二維座標平面上計算距離的方式。
UVa 152 10514 10709點到原點距離1.double length(Point& p)2.{3.return sqrt(p.x * p.x + p.y * p.y);4.}1.double length(Point& p)2.{3.return sqrt(p.x * p.x + p.y * p.y);4.}1.// 也可以運用pow來計算平方。
但是沒有多大好處。
2.double length(Point& p)3.{4.return sqrt(pow(p.x, 2) + pow(p.y, 2));5.}1.// 也可以運用pow來計算平方。
但是沒有多大好處。
2.double length(Point& p)3.{4.return sqrt(pow(p.x, 2) + pow(p.y, 2));5.}1.// 也可以運用dot來計算距離。
但是沒有多大好處。
2.double length(Point& p)3.{4.return sqrt(dot(p, p));5.}1.// 也可以運用dot來計算距離。
但是沒有多大好處。
2.double length(Point& p)3.{4.return sqrt(dot(p, p));5.}開根號相當耗費時間。
有時候做一些幾何計算時,會將數學式子簡化到不必開根號,以節省計算時間。
因此,設計不開根號的程式碼,有時候也是會有用途的。
1.// 長度的平方倍,沒有開根號。
2.double length2(Point& p)3.{4.return p.x * p.x + p.y * p.y;5.}1.// 長度的平方倍,沒有開根號。
2.double length2(Point& p)3.{4.return p.x * p.x + p.y * p.y;5.}點到點距離1.double distance(Point& p1, Point& p2)2.{3.return sqrt((p2.x - p1.x) * (p2.x - p1.x)4.+ (p2.y - p1.y) * (p2.y -p1.y));5.}1.double distance(Point& p1, Point& p2)2.{3.return sqrt((p2.x - p1.x) * (p2.x - p1.x)4.+ (p2.y - p1.y) * (p2.y -p1.y));5.}1.double distance(Point& p1, Point& p2)2.{3.double dx = p2.x - p1.x, dy = p2.y - p1.y;4.return sqrt(dx * dx + dy * dy);5.}1.double distance(Point& p1, Point& p2)2.{3.double dx = p2.x - p1.x, dy = p2.y - p1.y;4.return sqrt(dx * dx + dy * dy);5.}1.double distance(Point& p1, Point& p2)2.{3.return sqrt(pow(p2.x - p1.x, 2) + pow(p2.y - p1.y, 2));4.}1.double distance(Point& p1, Point& p2)2.{3.return sqrt(pow(p2.x - p1.x, 2) + pow(p2.y - p1.y, 2));4.}1.// 重複利用之前的程式碼2.// 好處是程式碼結構較穩定、可讀性高3.// 壞處是程式執行時要多呼叫一次函式,各有利弊4.double distance(Point& p1, Point& p2)5.{6.return length(p2 - p1);7.}1.// 重複利用之前的程式碼2.// 好處是程式碼結構較穩定、可讀性高3.// 壞處是程式執行時要多呼叫一次函式,各有利弊4.double distance(Point& p1, Point& p2)5.{6.return length(p2 - p1);7.}點到線距離數學常常用 ax+by+c=0 表示直線,運用 abs(ax+by+c)/sqrt(a^2+b^2) 公式計算點到線距離。