自学内容网 自学内容网

Unity中叉乘意义与代码

Unity中叉乘意义与代码

 在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。 叉乘的结果是个向量,方向在z轴上,在二维空间里,让我们暂时忽略它的方向,将结果看成一个向量,那么这个结果类似于上述的点积  Vector3  D =axb = |a||b|sin(θ) 然而角度 θ和上面点乘的角度有一点点不同,他是有正负的,是指从a到b的角度

1. 定义

向量的叉乘(也称为向量积)是两个三维向量之间的运算,结果是一个新的向量。数学上,给定两个向量 a 和 b,它们的叉乘 a×b 是一个垂直于 a 和 b 所在平面的向量。

2. 几何意义

  • 方向:叉乘结果的方向由右手定则确定。将右手四指从 a 转向 b,拇指的方向即为叉乘结果的方向。Unity 中是左手!

  • 大小:叉乘结果的大小等于 a 和 b 所形成的平行四边形的面积

3. 物理意义

  • 力矩:在物理学中,力矩(Torque)可以通过力向量和力臂向量的叉乘来计算。力矩的方向表示旋转轴的方向,大小表示旋转效应的强度。

  • 磁场中的洛伦兹力:在电磁学中,洛伦兹力可以通过电荷速度向量和磁场向量的叉乘来计算。

4. 在Unity中的应用

  • 计算法线:在3D图形学中,计算表面法线时,可以使用两个不共线的表面向量的叉乘来得到法线向量。这在光照计算中非常重要。

  • 旋转轴:在旋转操作中,可以通过两个向量的叉乘来确定旋转轴。例如,在计算物体的旋转方向时,可以使用当前方向向量和目标方向向量的叉乘来确定旋转轴。

  • 碰撞检测:在碰撞检测中,叉乘可以用来计算碰撞法线和碰撞响应的方向。

Unity中可以用一个函数直接计算出两个向量的叉乘结果哦!

这个结果会得到两个向量构成的平面的垂直向量!

意义:

学习代码:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VectorCrossLraer2 : MonoBehaviour
{
    // 这个脚本实现演示向量的叉乘
    public GameObject A;
    public GameObject B;
    Vector3 one = new Vector3(2, 4, 0);

    void Update()
    {
        //计算两个向量构成的平面的法线向量-垂直向量
        Vector3 NormalVec= Vector3.Cross(A.transform.position, B.transform.position);
        Debug.DrawLine(Vector3.zero, A.transform.position, Color.red);//绘制原点到A坐标的方向向量
        Debug.DrawLine(Vector3.zero, B.transform.position, Color.red);//绘制原点到B坐标的方向向量
        Vector3 XIANGJIAN = A.transform.position + B.transform.position;//两个向量相加,构成对角线向量
        Debug.DrawLine(XIANGJIAN / 2, NormalVec, Color.green);

        float changdu= A.transform.position.magnitude;

        Debug.Log(changdu);//输出原点到A点连线向量的长度
       Debug.Log(one.normalized);//向量单位化
       Debug.Log(one.normalized.magnitude);//计算向量单位化以后的长度

    }
}


原文地址:https://blog.csdn.net/leoysq/article/details/134116096

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!