当前位置: 首页 > news >正文

竞价网站如何设计腾讯企业qq官网

竞价网站如何设计,腾讯企业qq官网,2345游戏盒子,装修网站平台推荐注:本篇是基于唐老师的学习视频做的一些理论实践,需要提前知道一些线性代数的基础知识,原视频链接: 8.数学基础知识学习说明_哔哩哔哩_bilibili 前期准备: 知识点①: Unity中需要遵守的设定:…

注:本篇是基于唐老师的学习视频做的一些理论实践,需要提前知道一些线性代数的基础知识,原视频链接:

8.数学基础知识学习说明_哔哩哔哩_bilibili

前期准备:

知识点①:

        Unity中需要遵守的设定:

                1、我们约定变换顺序为:缩放->旋转->平移。

                2、我们约定旋转的顺序为:Z->X->Y。

知识点②:

        1、基础变换矩阵的构成规则:

        2、平移矩阵的定义:

                A=\begin{bmatrix} 1 & 0& 0 & tx \\ 0& 1& 0& ty\\ 0& 0& 1& tz\\ 0& 0&0 & 1 \end{bmatrix}       逆矩阵     A^{-1}=\begin{bmatrix} 1 & 0 & 0 & -tx \\ 0& 1 & 0& -ty\\ 0& 0& 1 & -tz\\ 0& 0& 0& 1 \end{bmatrix}

        3、旋转矩阵的定义:    

                       绕X轴旋转\beta度:                        绕Y轴旋转\beta度:                       绕Z轴旋转\beta度:

               \begin{bmatrix} 1 & 0 & 0 & 0\\ 0& cos\beta & -sin\beta &0 \\ 0& sin\beta & cos\beta &0 \\ 0& 0 & 0 & 1 \end{bmatrix}          \begin{bmatrix} 1 & 0 & 0 & 0\\ 0& cos\beta & -sin\beta &0 \\ 0& sin\beta & cos\beta &0 \\ 0& 0 & 0 & 1 \end{bmatrix}          \begin{bmatrix} 1 & 0 & 0 & 0\\ 0& cos\beta & -sin\beta &0 \\ 0& sin\beta & cos\beta &0 \\ 0& 0 & 0 & 1 \end{bmatrix}

                因为旋转矩阵是正交矩阵,所以它的逆矩阵就是它的转置矩阵。

                即:假设有旋转矩阵A,那么 A^{-1}=A^{T}

        4、缩放矩阵的定义:

                A=\begin{bmatrix} kx & 0 & 0 & 0\\ 0 & ky & 0 & 0\\ 0 & 0 & kz & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}    逆矩阵   A^{-1}=\begin{bmatrix} 1/kx & 0 & 0 & 0\\ 0 & 1/ky & 0 & 0\\ 0 & 0 & 1/kz & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}

局部坐标转世界:

        我们需要明白一个概念,在3D空间中,假设有一个结点R存在一个子节点A,那么如果R就是坐标原点,A的局部坐标系就是世界坐标系。如果结点R存在旋转,平移等变换,那么A的局部坐标依旧不会变,R的变换会带动A的变换。那么最终的世界坐标满足关系式:

{A}'=M*A

M代表R的变换矩阵,A代表R在原点时的世界坐标(即局部坐标),A'代表最终的世界坐标。

再根据知识点1,得到矩阵M=平移矩阵A×旋转矩阵B×缩放矩阵C

便有如下代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Test : MonoBehaviour
{public Transform targetTrans;private void Start(){Vector4 startPos = new Vector4(targetTrans.localPosition.x, targetTrans.localPosition.y, targetTrans.localPosition.z, 1);Matrix4x4 scaleMatrix = ScaleMatrix(transform.localScale.x, transform.localScale.y, transform.localScale.z);Matrix4x4 rotateMatrix = RotateYMatrix(transform.eulerAngles.y)*RotateXMatrix(transform.eulerAngles.x)*RotateZMatrix(transform.eulerAngles.z);Matrix4x4 translateMatrix = TranslateMatrix(transform.position.x, transform.position.y, transform.position.z);//按照缩放->旋转(按照Z->X->Y顺序旋转)->平移的变换顺序Vector4 resPos = translateMatrix * rotateMatrix * scaleMatrix * startPos;Debug.Log(string.Format("局部坐标转世界坐标={0}",resPos));Debug.Log(string.Format("调用UnityAPI的结果={0}",transform.TransformPoint(startPos)));}//缩放矩阵private Matrix4x4 ScaleMatrix(float x,float y,float z){Matrix4x4 targetMatrix = new Matrix4x4();targetMatrix.m00 = x;targetMatrix.m11 = y;targetMatrix.m22 = z;targetMatrix.m33 = 1;return targetMatrix;}//旋转矩阵(X轴)private Matrix4x4 RotateXMatrix(float angle){Matrix4x4 targetMatrix = new Matrix4x4();targetMatrix.m00 = 1;targetMatrix.m11 = Mathf.Cos(angle * Mathf.Deg2Rad);targetMatrix.m12 = -Mathf.Sin(angle * Mathf.Deg2Rad);targetMatrix.m21 = Mathf.Sin(angle * Mathf.Deg2Rad);targetMatrix.m22 = Mathf.Cos(angle * Mathf.Deg2Rad);targetMatrix.m33 = 1;return targetMatrix;}//旋转矩阵(Y轴)private Matrix4x4 RotateYMatrix(float angle){Matrix4x4 targetMatrix = new Matrix4x4();targetMatrix.m00 = Mathf.Cos(angle * Mathf.Deg2Rad);targetMatrix.m02 = Mathf.Sin(angle * Mathf.Deg2Rad);targetMatrix.m11 = 1;targetMatrix.m20 = -Mathf.Sin(angle * Mathf.Deg2Rad);targetMatrix.m22 = Mathf.Cos(angle * Mathf.Deg2Rad);targetMatrix.m33 = 1;return targetMatrix;}//旋转矩阵(Z轴)private Matrix4x4 RotateZMatrix(float angle){Matrix4x4 targetMatrix = new Matrix4x4();targetMatrix.m00 = Mathf.Cos(angle * Mathf.Deg2Rad);targetMatrix.m01 = -Mathf.Sin(angle * Mathf.Deg2Rad);targetMatrix.m10 = Mathf.Sin(angle * Mathf.Deg2Rad);targetMatrix.m11 = Mathf.Cos(angle * Mathf.Deg2Rad);targetMatrix.m22 = 1;targetMatrix.m33 = 1;return targetMatrix;}//平移矩阵private Matrix4x4 TranslateMatrix(float x,float y,float z){Matrix4x4 targetMatrix = new Matrix4x4();targetMatrix.m03 = x;targetMatrix.m13 = y;targetMatrix.m23 = z;targetMatrix.m00 = 1;targetMatrix.m11 = 1;targetMatrix.m22 = 1;targetMatrix.m33 = 1;return targetMatrix;}
}

挂载脚本:

我们用了Unity自带的局部转世界的APITransform.TransformPoint进行结果对比,发现最终的计算结果是一样的(忽略第四个参数1.0,代表的含义是点)。

世界坐标转局部:

        由刚刚的{A}'=M*A公式推导,其实可以得到:

                                        ​​​​​​​                M^{-1}*{A}'=A

        即局部坐标=逆变换*世界坐标

由上面的性质得到已知  矩阵M=平移矩阵A×旋转矩阵B×缩放矩阵C,那么矩阵M的逆矩阵

                                                         M^{-1}=C^{-1}*B^{-1}*A^{-1}

矩阵A,B,C的逆矩阵都可以根据知识点2得到结果,最终就可以根据世界坐标和逆变换反推导局部坐标。

http://www.mnyf.cn/news/43546.html

相关文章:

  • Wordpress隐藏文字内容苏州首页关键词优化
  • 做金融类网站信息如何优化上百度首页公司
  • 哈尔滨网站建设运营湖北百度推广公司
  • 防水网站建设舆情监测系统
  • 时时彩网站做号百度竞价关键词查询
  • 搞笑资讯网站源码关键词点击排名系统
  • 注册公司需要多少钱手续费seo网站的优化流程
  • 做网站秒杀软件用什么语言好全网营销平台
  • 怎么做网站卖空间怎么被百度收录
  • 电商网站改版方案百度手机助手最新版下载
  • 视频播放网站开发的报告5118网站查询
  • 企业门户网站建设方案书软件开发一般需要多少钱
  • 国际网站推广专员招聘下载班级优化大师并安装
  • 武汉新公司做网站|武昌专业做网站--武汉金宇盈科技有限公司阿里指数查询
  • 做网站上传电子书重庆seo整站优化外包服务
  • 网站logo模板成人电脑培训班附近有吗
  • 5个常见的电子商务网站制作网页教程
  • 做公司网站都需要哪些东西站长之家网站介绍
  • c语言做网站的代码企业网站策划
  • 日本二手手表网站域名查询大全
  • 光明新区住房和建设局 官方网站竞价账户
  • 住房和建设局win7优化大师免安装版
  • 个人养老保险怎么买合适惠州抖音seo
  • 做慧聪网站多少钱友情链接代码
  • 济南建站网址seo查询
  • vs做网站连数据库巩义网络推广
  • 做电影网站需要空间吗seo优化网络公司排名
  • 网站制作公司dedecms论坛发帖
  • 网站的交互设计包括哪些360开户
  • 做的比较好的网站网店如何推广