IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 【Unity学习 3D基础数学编程】 -> 正文阅读

[游戏开发]【Unity学习 3D基础数学编程】

2.坐标系

  1. 2D坐标系:一般以屏幕左上角或者左下角为原点。 3D坐标系:左手系(默认使用的)和右手系,Y UP和Z UP。

3.向量

  1. 向量的特性:只能位移,不能缩放、旋转。
  2. 两个不相等的向量确定也给平行四边形、确定一个平面、确定一个三角形等。
  3. 可以用单位向量控制玩家的速度。
  4. now.Normalize(); 规范化向量,求这个向量的单位向量.
  5. 向量叉积:u x v可以计算平面的法向量。
  6. 向量点积:可以用来编写shader来模拟光照的颜色效果。

4.矩阵

  1. 对于一个空间点,设T为平移矩阵,S为缩放矩阵,R为旋转矩阵,则V * R * S * T为变化后的位置,但这样计算效率低,可以通过先计算RTS,然后再直接V * RTS,RTS就是代表了旋转、平移、缩放的矩阵。

平面及射线

  1. 射线的定义:P0为起点,u为单位向量,则P(t)=P0+tu;t为射线长度
  2. 平面的定义:P0为平面上的一点,n为法向量,p为平面任意一点,则n(p - p0)=0
  3. 射线与平面关系:t = (n.p1 - n.p0) / n.u;若t>=0,则射线与平面相交,且交点为p0+tu,若t<0,则不相交。

Vector3D类

public class Vector3D
{

    public float x, y, z;



    public Vector3D(float x=0f,float y=0f,float z=0f)
    {
        this.x = x;
        this.y = y;
        this.z = z;
        
    }
    




    public Vector3D add(Vector3D vec)
    {
        Vector3D ret = new Vector3D(x, y, z);
        ret.x += ret.x;
        ret.y += ret.y;
        ret.z += ret.z;
        return ret;
    }

    public Vector3D sub(Vector3D vec)
    {
        Vector3D ret = new Vector3D(x, y, z);
        ret.x -= vec.x;
        ret.y -= vec.y;
        ret.z -= vec.z;
        return ret;
    }

    public Vector3D corss(Vector3D vec)
    {
        Vector3D ret = new Vector3D();
        ret.x = y * vec.z - z * vec.y;
        ret.y = z * vec.x - x * vec.z;
        ret.z = x * vec.y - y * vec.x;
        return ret;
    }



    public void normalize()
    {
        float length = (float)System.Math.Sqrt(x * x + y * y + z * z);
        x /= length;
        y /= length;
        z /= length;
    }
    public override string ToString()
    {
        return string.Format("(" + x + "," + y + "," + z + ")");
    }

    public static Vector3D operator + (Vector3D lv,Vector3D rv)
    {
        return lv.add(rv);
    }

    public static Vector3D operator - (Vector3D lv,Vector3D rv)
    {
        return lv.sub(rv);
    }


}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:27:57  更:2022-02-16 13:28:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:35:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码