Uniity基础——Mathf类、3D数学类补充

Mathf

3D数学

1. Mathf 类

数学操作方法:

1. 角度与弧度值、正无穷大、负无穷大

Deg2Rad

Rad2Deg

Infinity

NegativeInfinity

2. 三角函数

Sin( 30 )

Cos()

.....

3. 四舍五入、求绝对值、开平方、最大|小数、

Round()|Ceil()|Floor()

Abs()

Sqrt()

Max()|Min()

--------------------------------------------------------

3D数学

1.向量(掌握)

2.Vector3 (掌握)

3.矩阵(不介绍)

4.四元数

---------------------------------------------------------

第一点:向量

1) 向量的含义:有方向有大小

2)向量:二维,三维,四维....

3) Unity中涉及的向量:三维向量

4)Unity中三维向量的创建方式

5)Unity中对向量的基本运算(加,减,乘,除)

( x, y, z )

x: 表示在水平方向上的分量

y: 表示在垂直方向上的分量

z: 表示深度

********************************************************

二维向量的基本运算:

V1: ( 1,2 )

V2: ( 10,20 )

V1+V2 两个向量和: (1+10,2+20)===》(11,22)

V1-V2 两个向量差:  (1-10,2-20)  ===> (-9,-18)

V1*V2 两个向量积:  (1*10,2*20)   ===》(????,????)

------------------------------------------------------

三维向量 :
1. 如何表示一个三维向量:

放在一个小括号中,小括号中有三个数据,

(x,y,z),x放在最前面,y中间,z放最后

x: 表示在水平方向上的分量

y: 表示在垂直方向上的分量

z: 表示深度

V1:  ( 1,2,3 )----- Vector3

V2:  ( 10,20,30 )---Vector3

2.如何构建一个三维向量

Vector3  v1 = new  Vector3( 1,2,3 );

1). 通过两个参数的构造方法:

Vector3(x,y),这时,z分量默认是0

如: Vector3  v =  new Vector3( 1,2 )

等价于:

Vector3  v  =  new  Vector3(1,2,0)

2). 通过三个参数的构造方法:

Vector3( x,y,z)

如: Vector3  v =  new Vector3(1,2,0)

3). 通过无参数的构造方法,然后访问x,y,z并为赋值

Vector3  v  =  new Vector3();

v.x = 1;

v.y = 2;

v.z = 3;

--------------------------------------------------------

3. Vector3 常用的方法(掌握)

0)  x  : 表示一个三维向量中的 x 分量

1)  y  :表示一个三维向量中的 y 分量

2)  z  :表示一个三维向量中的 z 分量

3) 获取向量的长度 : magnitude

4) 向量的标准化:normalized

5) 向量的运算(加法,减法):

+    -    *    /    ==     !=

V1 + V2

V1 - V2

V1 * float n

V1 / float n

V1 == V2

V1 != V2

---------------------------------------------------

1) 求两个向量的距离: Distance( )

2)  求两个向量的叉乘:Cross( )

-结果是一个Vector3。

-两个向量长度相乘,再乘以两个向量夹角的正弦值。

例如:V1( 10,20,3 ) , V2( 20,2,10 )

第1步:求V1和v2向量的长度,v1Length,v2Length

第2步:两个向量长度相乘 ,存到 mulLength中

第3步:求两个向量的夹角值,存到 angleValue中

第4步:夹角求了之后,再求夹角的正弦值 sinValue中

第5步:第2步的结果和第4步的结果相乘

3)  求两个向量的点乘:Dot()

-结果是一个浮点数。

-两个向量长度相乘,再乘以两个向量夹角的余弦值。

4) 求两个向量间的夹角:Angle( )

4)  Lerp() : 获取一个指定范围的线性值。案例

4)  SmoothDamp(): ----

5)  .....

V1: (10,20,30)

V2: (40,20,70)

案例:

Vector3  :   a

Vector3  :   b

Vector3.Lerp( a, b ,t );  --- 新向量

返回什么样的新向量:

1) t = 0     ---- a就是返回的新向量

2)  t =1      ---- b就是返回的新向量

3) 0.345666

使用场景: 平缓移动  或  相机跟随效果

原文地址:https://www.cnblogs.com/winward996/p/11502357.html

时间: 2024-11-12 09:27:03

Uniity基础——Mathf类、3D数学类补充的相关文章

Java:日历类、日期类、数学类、运行时类、随机类、系统类

一:Calendar类 java.util 抽象类Calendar   1.static Calendar getInstance()使用默认时区和语言环境获得一个日历. 2. int get(int field) 返回给定日历字段的值. java.lang.Object 继承者 java.util.Calendar 所有已实现的接口: Serializable, Cloneable, Comparable<Calendar> 直接已知子类: GregorianCalendar 对于日期字段:

Java中的日历类/集合类/数学类/正则表达式/数组工具类等的常用方法与基本功能

一. Arrays 针对数组操作的工具类,提供了一些针对数组排序和二分搜索的方法.常用方法:1.public static String toString(int[] a):将int类型的数组转换成字符串.转换成字符串后输出形式: ([元素1,元素2,元素3...]),Arrays在底层重写了toString方法.2.public static void sort(int[] a):对指定的 int 型数组按数字升序进行排序.3.public static int binarySearch(in

Java基础__Java中常用数学类那些事

(未完) package Cynical_Gary; public class Cynical_Text { public static void main(String[] args){ System.out.println("30°对应的弧度是:"+Math.toRadians(30)); System.out.println("π/6对应的角度是:"+Math.toDegrees(Math.PI/6)); System.out.println("45

I学霸官方免费教程二十四:Java常用类之随机数 Math类和Random类

咱先了解即可 Math类:数学类,包括abs()求绝对值,sin()正弦函数,cos()余弦函数等等Random类:获取各种数据类型的随机数 实例: import java.util.Random; /**  * 演示获取随机数  * @author 学霸联盟 - 赵灿  */ public class MathDemo { public static void main(String[] args) { //创建Random对象 Random random = new Random(); //

Java基础12:深入理解Class类和Object类

Java基础12:深入理解Class类和Object类 Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI. 这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类.Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建. 说白了就是: Class类也是类的一种,只是名字和class关键字高度相似.Java是大小写敏感的语言.

夯实Java基础系列9:深入理解Class类和Object类

目录 Java中Class类及用法 Class类原理 如何获得一个Class类对象 使用Class类的对象来生成目标类的实例 Object类 类构造器public Object(); registerNatives()方法; Clone()方法实现浅拷贝 getClass()方法 equals()方法 hashCode()方法; toString()方法 wait() notify() notifAll() finalize()方法 CLass类和Object类的关系 参考文章 微信公众号 Ja

Math 数学类

/* Math 数学类, 主要是提供了很多的数学公式. abs(double a) 获取绝对值 ceil(double a) 向上取整 floor(double a) 向下取整 round(float a) 四舍五入 random() 产生一个随机数. 大于等于 0.0 且小于 1.0 的伪随机 double 值 */ public class Demo4 { public static void main(String[] args) { System.out.println("绝对值:&qu

cocos2dx[3.2](9) ——数学类Vec2/Size/Rect

[唠叨] 数学类Vec2.Size.Rect,是cocos2dx中比较常用的类. 比如设置图片位置,设置图片大小,两图片的碰撞检测等等. 比起2.x版本,在3.2中本质上其实没有太大的变化,主要的变化就是将全局宏定义相关的操作封装到各自的类中而已.比如:Vec2的向量运算宏定义ccp***(),现在都已经封装到Vec2类里面去了. [Vec2] Vec2原名Point,它既可以表示一个二维坐标点,又可以表示一个二维向量. 同时Vec2对运算符进行了重载,可以很方便的完成Vec2的赋值.加减乘除等

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程