c++ 如何实现两个向量的内积u和v的外积

表示空间中两向量的  旋转关系 - 旋轉向量

外积还引入了 反对称符号 “ ^ ”将外积变成了线性运算,矩阵与向量乘法

旋转向量:  在右手法则下,我们用右手的四个手指从向量  a 转向向量  b 大拇指朝向就是旋转向量的  方向

}

一个大圆(R)套着一个小圆(Rm),有硬币(r)从大圆外出发(审题未注意到这一条件导致多考虑了两种不必要的情况)假设没有摩擦力,碰到小圆就会碰撞反射出来未碰到小圆则穿过大圆,或者没有进大圆问硬币在大圆内待得时间是多少。
三种情况如题目描述中所写:碰到小圆就会碰撞反射出來,未碰到小圆则穿过大圆或者没有进大圆,尤其注意莫忘最后一种
首先,一定注意题目已经说明硬币从大圆外出发,不要忘记速喥是矢量既有大小也有方向,大小也不一定是1
其次,下面两种解法都要注意硬币有自己的r,题目要求硬币任何部分在大圆内都属于硬币在大圆内的情况因此要从硬币紧紧挨着大圆外时,开始考虑那么下面两种方法,对于大圆R和小圆的半径Rm分别相当于变成了R+rRm+r。
解法①列方程求解[时间作自变量]假设(x1,y1)为硬币出发点,(vx,vy)为速度矢量
联立上式,得t1,t2,t1m,t2m,分别为出大圆、进大圆、出小圆、进小圆的时刻解法①注意,方程无解的情况或者t<0的情况,都是说明硬币没有进大圆输出0。
解法②向量积和sin角度求解长度再除以有方向的速度假设t是時间,s1是未碰撞情况下总轨迹长度s2是碰撞情况下轨迹长度,v是速度矢量假设硬币坐标(px,py),速度矢量为(vx,vy)。注意判断方向等使其出现不进入大圓的情况
(另外此处解法②的d的求法中如果仔细探究会发现,sin的求法可能不太好理解分子使用速度矢量*t来表示那段移动轨迹的矢量,同時分母使用速度矢量的模长(速度的大小)*t来表示那段移动轨迹的矢量大小最后同时约去了一个t。)
综上解法②只要列出方程,可以根據两解、一解、无解等情况来辅助推测题中的坑和陷阱,而解法①需要更清晰的思路更细致的考虑。
注意学习到一个点到一条边的距离可以如下计算:
还可用向量叉乘/2得到面积来算,或者向量叉乘得到向量夹角的sin夹角配合斜边来算
补充关于向量点乘和向量叉乘:
int Judge(){//向量点乘(对应x相乘+对应y相乘)(向量内积(向量点乘)和向量外积(向量叉乘),此处是向量点乘而非向量叉乘)(以(x1,y1)与(x2,y2)为例,向量点乘:x1*x2+y1*y2,向量叉乘:x1*y2-y1*x2=向量(x1,y1)的模 * 向量(x2,y2)的模 * sin(向量夹角))(向量点乘==0意味着向量夹角为90°,向量点乘小于0,意味着向量夹角大于90°)(向量叉乘=0,意味着sin(向量夹角)==0则两个向量要么为0°要么为180°),小于0则之间夹角大于90度,等于0则为90度如题应该严格小于90度才有不为0的答案 return 1;///千萬不要返回-1,因为如果主程序里if(Judge())那么-1与1的效果是一样的!!! }else{//方向对了,但是距离过远未曾进大圆
}

我要回帖

更多关于 向量的内积 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信