向量,点积和叉积

向量,点积和叉积向量 点积和叉积

向量

定义

既有方向,又有长度,且可以自由平移的线段,可称作向量(不是有向线段,有向线段不可以自由平移,因为具有起点)。

实现

程序实现中,我们经常把向量的起点移到(0,0),然后用坐标x,y表示这个向量,向量的加减乘除法可以通过重载实现。

代码

struct Point { double x,y; Point(double X=0,double Y=0) {x=X;y=Y;} }; //向量和点可归为一个结构体 typedef Point vec; vec operator + (const vec& a,const vec& b) { 
  return vec(a.x+b.x,a.y+b.y);} //向量+向量 vec operator - (const vec& a,const vec& b) { 
  return vec(a.x-b.x,a.y-b.y);} //向量-向量 vec operator * (const vec& a,double b) { 
  return vec(a.x*b,a.y*b);} //向量*实数 vec operator / (const vec& a,double b) { 
  return vec(a.x/b,a.y/b);} //向量/实数

点积

定义

对于两个向量va和vb,他们的点积(也叫数量积)=|va|*|vb|*cosθ,其中θ是va和vb的夹角,这是点积的几何意义。

计算

可以证明,点积也=xa*xb+ya*yb,这就是点积的代数意义。

有了这个代数意义的公式,我们就可以方便的计算点积,然后算夹角θ了。

代码

double Dot (const vec& a,const vec& b) { 
  return a.x*b.x+a.y*b.y;} //点积 double Length (const vec& a) { 
  return sqrt(a.x*a.x+a.y*a.y);} //长度 double Angle (const vec& a,const vec& b) { 
  return acos(Dot(a,b)/Length(a)/Length(b));} //算夹角θ(弧度制)

叉积

定义

计算

和点积一样,叉积也有代数意义,叉积=xa*yb-xb*ya(这下我不会证明了,有人会的话可以私信我,谢谢!)。

代码

double Cross (const vec& a,const vec& b) { 
  return a.x*b.y-b.x*a.y;} //点积 double Area (const Point& a,const Point& b,const Point& c) { 
  return Cross(b-a,c-a);} //求三角形ABC面积的两倍(有向面积)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214407.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:20
下一篇 2026年3月18日 下午4:20


相关推荐

  • Delegates and Events in C# .NET

    Delegates and Events in C# .NETOverView Allofushavebeenexposedtoeventdrivenprogrammingofsomesortortheother.C#addsonvaluetotheoftenmentionedworldofeventdrivenprogrammingbyaddingsupportthrou

    2025年6月19日
    7
  • 教大家支付宝抢红包

    教大家支付宝抢红包最近手机支付宝每次到了 10 00 就提醒我抢红包 可是每次手都戳酸了 一个都没有 如是恼怒之下用按键精灵写了一个程序 让红包无处可逃 第一步 1 下载按键精灵 android 版 应用宝啊 什么软件中心里面都有 2 手机必须 root 一键 root 工具多的很 这里我就不说了第二步 打开按键精灵脚本代码 CodebyKaleo

    2026年3月17日
    2
  • Eclipse 改动凝视的 date time 日期时间格式,即${date}变量格式

    Eclipse 改动凝视的 date time 日期时间格式,即${date}变量格式

    2022年1月20日
    50
  • sdn网络技术简介(DID通信业务)

    一、SDN网络数据中心最重要的是要完善和建设10Gb、40Gb甚至是100Gb以太网的设施基础。软件定义网络(SDN)一直都是网络领域里的热门话题。SDN的最大好处是有可能节约网络的总拥有成本,并使网络基础设施能够弹性、灵活地支持业务。SDN将这种传统的、离散方法转变成了一种新的全局方法。SDN是一种网络架构,它能够通过动态编程网络设备来控制或”界…

    2022年4月14日
    121
  • 搭建 Drupal 个人网站的图文教程

    搭建 Drupal 个人网站的图文教程操作场景Drupal是使用PHP语言编写的开源内容管理框架(CMF),由内容管理系统(CMS)及PHP开发框架(Framework)共同构成。Drupal具备强大的定制化开发能力,您可使用Drupal作为个人或团体网站开发平台。本文档介绍如何在腾讯云云服务器(CVM)上手动搭建Drupal个人网站。进行手动搭建Drupal个人网站需要熟悉Linux命令,例如Cen…

    2022年6月11日
    36
  • What Are You Talking About HDU1075[通俗易懂]

    What Are You Talking About HDU1075[通俗易懂]一开始我也想用map但是处理不好其他字符。。看了题解多多学习!很巧妙就是粗暴的一个字符一个字符的来分为小写字母和非小写字母两个部分一但单词结束的时候就开始判断。#include<

    2022年7月4日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号