回首这篇两年前写的博客,算是自己觉得比较有意思的一篇了,那时候刚拿毕业证也就一年左右吧,在一家小公司写代码,然后一同事也是前辈向我讨教这个问题,问我有没有招编程解决这个问题。抱着试试看的态度立马就研究了起来,从理论到实践,也是第二次感觉到数学和代码的结合真的很奇妙(第一感觉神奇的是在学校实验室捣鼓四轴飞行器的pid算法,通过用微分和积分的以及比例控制对飞机的过去、现在、以及未来的飞行姿态做最佳调控)。学的一点数学基础还好没有交还给老师,查资料然后理论+实践花了一小会功夫算是把代码写出来了。虽然只是简单的一道数学题转变为C代码实现。但工作两年多了,确很少有找到这种编程的乐趣和感觉!

向量:既有大小又有方向的量叫向量。
向量的模:向量的长度称为向量的模,用符号| |表示。
零向量:长度为0的向量</span>
单位向量:长度为1的向量平面中,设有向量a={x1, y1},向量b={x2, y2},则有
(1)       向量的加:a+b={x1+x2, y1+y2}
(2)       向量的减:a-b={x1-x2, y1-y2}
(3)       向量的点积(内积):a·b=|a|*|b|*cosθ=x1*x2 + y1*y2
(4)       向量的叉积(外积):a×b=x1*y2 - x2*y1 注:文中出现的*为数学乘法,×为叉积运算符。

三维中,设有向量a={x1, y1, z1},向量b={x2, y2, z2},

则a×b = {y1*z2-y2*z1, x2*z1-x1*z2, x1*y2-x2*y1}。注:点用()表示,如(x, y, z),而向量用{}表示,如{x, y, z}。

设有点A=(x1, y1),点B=(x2, y2),则由A到B可组成向量AB={x2-x1, y2-y1}(AB=-BA)。

平面中有两个向量a和b:
a∥b当且仅当a×b=0(0向量)
a⊥b当且仅当a·b=0
 
叉积的一个非常重要性质是,可以通过它的符号判断两矢量相互之间的顺逆时针关系:
若a×b > 0 , 则a在b的顺时针方向。
若a×b < 0, 则a在b的逆时针方向。
若a×b = 0,则a和b共线,方向相同或相反。

给出了坐标, 先求出两个向量的模,再求出两个向量的向量积
|a|=√[x1^2+y1^2]
|b|=√[x2^2+y2^2]
a*b=(x1,y1)(x2,y2)=x1x2+y1y2

cos=a*b/[|a|*|b|]=(x1x2+y1y2)/[√[x1^2+y1^2]*√[x2^2+y2^2]]

设a向量坐标为(x1,y1)b向量坐标为(x2,y2)则ab数量积a.b=x1x2+y1y2(注:a.b是数量积,a*b是向量积,是不一样的,不能弄混了.)</span>

数量积等于两向量对应坐标相乘后相加,当夹角大于90度时便为负值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>#define PI 3.1415926double Get_angle(double Ax, double Ay, double Bx, double By, double Cx, double Cy)
{double AB = 0;//向量AB的模 double BC = 0;double Sab = 0.0, Sbc = 0.0, Sabc = 0.0;double val = 180.0 / PI;double angle = 0.0;AB = sqrt( pow(Ax-Bx,2) + pow(Ay-By,2) ) ;BC = sqrt( pow(Bx-Cx,2) + pow(By-Cy,2) ) ;printf("AB = %f\n", AB);printf("BC = %f\n", BC);Sab = (Bx - Ax) * (Cx - Bx);//向量 Sbc = (By - Ay) * (Cy - By);Sabc = sqrt( pow(Sab, 2) + pow(Sbc, 2) ); printf("Sab = %f\n", Sab);printf("Sbc = %f\n", Sbc);printf("Sabc = %f\n", Sabc);angle =  acos( (Sabc/(AB*BC)) ) * val;   printf("Sab + Sbc = %f\n", Sab + Sbc);if( (Sab + Sbc) < 0 ){angle = 180.0 - angle;    }return angle;
}int main(void)
{double  ret = 0;//A(0,3)  B(0,0)  C(5,0)  90 正确//A(0,3)  B(0,0)  C( 3.464102,2)  120 正确//A(0,3)  B(0,0)  C( 3.464102,-2)  60 正确ret = Get_angle(0, 3, 0, 0,-3.464102, 2.0);printf("ret = %f\n", ret);system("pause");return 0;
}

效果截图!算是复习了高中时的数学了!

当然这里如果自己画图来理解验证的话就会更清晰了!

已知平面三点坐标求其中两条边之间的夹脚相关推荐

  1. 已知三角形三点坐标, 求三角形的面积

    摘自:http://blog.sina.com.cn/s/blog_4cddcaa3010008u7.html 已知三角形三点坐标, 求三角形的面积 发表时间:2004-8-10 作者:未知[获得此文 ...

  2. 已知三角形三边长求面积java_已知三角形三点坐标求三角形面积.java

    已知三角形三点坐标求三角形面积 主程序代码如下: import java.util.*; public class Tringle { public static void main(String[] ...

  3. 已知三角形三点坐标求角度_高中数学:椭圆相关角度的最值问题

    圆锥曲线中的最值问题主要包括长度最值.角度最值及面积最值等. 例题:如图1,已知椭圆的中心在坐标原点,焦点在x轴上,长轴 的长为4,左准线与x轴的交点为M, . (1)求椭圆的方程: (2)若直线 , ...

  4. 已知三角形三点坐标求角度_2019高考数学:解三角形——正弦定理和余弦定理的解题技巧和模型...

    正弦定理.余弦定理的每一个等式中都包含三角形的四个元素(三角形有三个角和三条边,三角形的边与角称为三角形的元素),如果其中三个元素是已知的(至少要有一个元素是边),那么这个三角形一定可解.关于斜三角形 ...

  5. 已知三角形三点坐标求角度_细心研磨椭圆焦点三角形,这肯定是最全的解释。...

    点击上方蓝字关注我 因为月考赶上运动会, 继国庆之后, 感觉又放了一个小长假. 原本身体是很愿意的, 可是, 刚讲的解析几何突然被中断了, 思想上还真是有点矛盾. 因为, 想了想两天后该讲些什么, 脑 ...

  6. python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

  7. python写的平行四边形_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

  8. HALCON已知平面两点图像坐标和对应机械坐标求仿射变换矩阵

    相机垂直于拍摄平面安装,已知平面上两点的图像坐标和对应的机械坐标,求仿射变换矩阵,及其变换参数 * 图像坐标 X Vx := [1348.087, 207.141] * 图像坐标 Y Vy := [5 ...

  9. 求空间两条直线之间的距离

    1. 前言 最近老板让写一段空间点匹配的代码, 其中涉及到求空间两直线之间的距离,写起来满费劲的, 这里做一个记录. 2. 处理思路 空间两直线之间的位置关系主要可以分为: 重合, 平行, 相交, 异 ...

最新文章

  1. Java 里的 for (;;) 与 while (true),哪个更快?
  2. PHP之提取多维数组指定列的方法
  3. linux apache2 伪静态,linux Ubuntu apache2 伪静态设置
  4. set python_使用dict和set
  5. 新系统如何测试软件,怎样检测电脑能否升级到最新的Windows11系统?官方检测工具帮你一招搞定!...
  6. 《Git版本控制管理(第2版)》——4.3 Git在工作时的概念
  7. julia语言 python解释器_继 Python 解释器移植到 Firefox 后,Mozilla 现在想支持 Julia 和 R...
  8. 【博客项目】—登录验证功能实现( 五)
  9. java用JDBC连接数据库的方式
  10. linux安装 wegt_linux 下安装wget
  11. combox控件触发事件_dom事件
  12. c语言恶搞小程序win7,如何使用c语言整人小程序素材开发整人小程序
  13. 计算机 在电厂的应用,计算机自动控制系统在火电厂中的应用
  14. 详解| Sklearn—GridSearch 调参函数
  15. 详解DNS服务、DNS解析、DNS劫持和污染
  16. 淘宝客如何利用美柚引流?淘宝客利用美柚APP日引流宝妈粉
  17. 千万珍惜:男人只有一滴泪
  18. 人体力学-线速度与角速度
  19. 十六进制转换成八进制
  20. 智能合约审计之条件竞争

热门文章

  1. 9个经典营销创业案例,彻底颠覆你的营销思维
  2. 【imx6ul】imx6ul上电boot rom启动过程
  3. android -- 蓝牙 bluetooth解读
  4. 滴滴新算法让你应对女友?道翰天琼认知智能机器人平台API接口大脑为您揭秘
  5. 靠贴牌飞利浦冲击上市,德尔玛的自有品牌又该如何“起跳”?
  6. 牛牛的DRB迷宫II(构造)
  7. 185电缆的接法图解_详细图解!原来电线接头有这么多接法……
  8. 拉丁超立方——样本点空间转换
  9. nginx的配置优化及经常使用的超时配置说明
  10. 史莱姆区块查找 超简单java代码