三维向量的夹角

这篇具有很好参考价值的文章主要介绍了三维向量的夹角。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

计算三维坐标组成的夹角


三维向量的夹角

参考:[三维向量夹角在线计算](https://www.23bei.com/tool/300.html)

公式:
三维向量夹角的计算公式如下:

假设两个三维向量分别为:a=(x1,y1,z1),b=(x2,y2,z2)。
向量a的模:|a|=√(x12+y12+z1^2)。
向量b的模:|b|=√(x22+y22+z2^2)。
两个向量的点乘:a·b=(x1x2+y1y2+z1z2)。
设两个向量的夹角为θ,则有:cosθ=(x1x2+y1y2+z1z2)/[√(x12+y12+z12)*√(x22+y22+z22)]。

上述公式均是以空间三维坐标给出的,如果令坐标中的z=0,则得到平面向量的计算公式。
两个向量夹角θ的取值范围是:[0,π]。当夹角为锐角时,cosθ>0;当夹角为钝角时,cosθ<0。

三维点坐标类

public class Point {
    public float x;
    public float y;
    public float z;

    public Point (float x, float y, float z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

计算公式

/**
     * 获取三维向量的夹角.
     *
     * @param center 夹角中心点
     * @param start  起始点
     * @param end    结束点
     * @return 返回夹角
     */
    public static float getTdAngle(Point center, Point start, Point end) {
        // 向量1
        float x1 = start.x - center.x, y1 = start.y - center.y, z1 = start.z - center.z;
        // 向量2
        float x2 = end.x - center.x, y2 = end.y - center.y, z2 = end.z - center.z;
        System.out.println("x1/y1/z1=" + x1 + "/" + y1 + "/" + z1);
        System.out.println("x2/y2/z2=" + x2 + "/" + y2 + "/" + z2);
        // 向量的点乘
        float vectorDot = x1*x2 + y1*y2 + z1*z2;
        // 向量1的模
        double vectorMold1 = Math.sqrt(Math.pow(x1, 2) + Math.pow(y1, 2) + Math.pow(z1, 2));
        // 向量2的模
        double vectorMold2 = Math.sqrt(Math.pow(x2, 2) + Math.pow(y2, 2) + Math.pow(z2, 2));
        // 向量的夹角[0, PI],当夹角为锐角时,cosθ>0;当夹角为钝角时,cosθ<0
        double cosAngle = vectorDot / (vectorMold1 * vectorMold2);
        double radian = Math.acos(cosAngle);
        return (float) (180 / Math.PI * radian);
    }

测试结果
三维向量的夹角文章来源地址https://www.toymoban.com/news/detail-504204.html


到了这里,关于三维向量的夹角的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

    x = [ x y ] boldsymbol{x} =begin{bmatrix}x\\\\yend{bmatrix} x = [ x y ​ ] 1. 平移变换 [ x ′ y ′ ] = [ x y ] + [ a b ] begin{bmatrix}x\\\'\\\\y\\\'end{bmatrix} = begin{bmatrix}x\\\\yend{bmatrix} + begin{bmatrix}a\\\\bend{bmatrix} [ x ′ y ′ ​ ] = [ x y ​ ] + [ a b ​ ]   将向量 [ a b ] begin{bmatrix}a\\\\bend{bmatrix} [ a b ​ ] 加到 [

    2024年03月17日
    浏览(44)
  • 【计算机图形学算法工具技巧】用Blender查看三维点云ply文件的点的序号和坐标

    因为用最近在学拉普拉斯曲面编辑的算法,需要查看三维点云ply文件的点的序号和坐标,然后固定或移动这些点的坐标。 这里介绍使用Blender 3.2软件查看三维点云ply文件的点的序号和坐标。 导入ply文件 隐藏不必要的物体(如cube),并将物体模式变成编辑模型!! 选择 gemo

    2024年02月13日
    浏览(71)
  • 三片式直角应变花主应力及其夹角计算

    #三片式直角应变花主应力及其夹角计算 是对于一些受力复杂的部位,很难判断受力主方向的测点,可采用三片式直角应变花进行测试,本文主要对三片式直角应变花的主应力和主应力方向进行计算。 三片式直角应变花的主应变计算公式如下(式1): 对于任意角度的应变计算

    2024年02月05日
    浏览(124)
  • 从零开始Vue项目中使用MapboxGL开发三维地图教程(四)改变鼠标style、地图置于单击feature中心、量测距离和polgon面积和中心点坐标

    总章节 从零开始Vue项目中使用MapboxGL开发三维地图教程 (一) MapboxGL介绍以及前期vue项目的搭建 (二) Mapbox地图样式 (三) 添加全屏,缩放旋转和比例控制面板以及自定义图标、标记点击弹窗、地图平移等功能 (四) 改变鼠标style、地图置于单击feature中心、量测距离和polgon面积和中

    2024年02月09日
    浏览(52)
  • 【Python】一行代码计算两经纬度点的距离及夹角

    2022.2.10更新,Python有现成的包可以直接调用。 geographiclib库 https://pypi.org/project/geographiclib/ 用法说明见博客: python 计算地球上两点距离和方位角(bearing)的包geographiclib_梓沂的博客-CSDN博客_geodesic python 通过经纬度计算地图上两点的距离及方位角,百度的结果是许多个人写的函

    2023年04月11日
    浏览(43)
  • threejs点击获取三维坐标(Three.js获取鼠标点击的三维坐标)

    绑定点击事件,通过 THREE.Raycaster 光线投射,用于确定鼠标点击位置上有哪些物体, raycaster.intersectObjects(scene.children) 返回点击位置上所有的物体的数组;我们用 var selected = intersects[0] 取第一个,也就是最前面的那个物体;在通过 selected.point 取点坐标

    2024年02月11日
    浏览(116)
  • 二维坐标和三维坐标相互转换

    原理参考世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换 我的需求是将二维点转换成三维点,旋转三维点,再转换为二维点,此处的旋转跟相机成像的旋转矩阵又没有关系。 假定像素坐标为(u,v),处理的输入数据是像素坐标,图像坐标为(x,y),相机坐标为(Xc

    2024年02月15日
    浏览(42)
  • 三维坐标系转换

    一、首先需要判断坐标系是左手坐标系还是右手坐标系 首先将拇指作为X轴,食指作为Y轴,中指作为Z轴。观察(待判断的)坐标系对应哪只手对应的坐标系。然后根据对应的坐标系使用适配定则判断。右(左)手定则:用右(左)手的大拇指指向旋转轴的正方向,弯曲手指,

    2024年02月15日
    浏览(31)
  • 三维坐标变换及其矩阵

    三维坐标变换是将三维空间中的点从一个坐标系映射到另一个坐标系的数学操作。这些变换通常包括平移、旋转、缩放和投影等基本操作。以下是一些常见的三维坐标变换以及它们的变换矩阵表示方式: 1. **平移变换(Translation)**:    三维平移变换的矩阵表示为:      

    2024年02月02日
    浏览(43)
  • VTK OrientationMarker 方向 三维坐标系 相机坐标轴 自定义坐标轴

    本文 以 Python 语言开发 我们在做三维软件开发时,经常会用到相机坐标轴,来指示当前空间位置; 坐标轴效果: 相机方向坐标轴  Cube 正方体坐标轴  自定义坐标轴: Code: Axes CameraOrientationWidget OrientationMarkerWidget custom OrientationMarker

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包