功能:如标题所示,主要考虑用来做3d Plane的自适应屏幕

/// <summary>
/// 获取指定距离下相机视口四个角的坐标
/// </summary>
/// <param name="cam"></param>
/// <param name="distance">相对于相机的距离</param>
/// <returns></returns>
public static Vector3[] GetCameraFovPositionByDistance(this Camera cam, float distance)
{
Vector3[] corners = new Vector3[]; float halfFOV = (cam.fieldOfView * 0.5f) * Mathf.Deg2Rad;
float aspect = cam.aspect; float height = distance * Mathf.Tan(halfFOV);
float width = height * aspect; Transform tx = cam.transform; // 左上角
corners[] = tx.position - (tx.right * width);
corners[] += tx.up * height;
corners[] += tx.forward * distance; // 右上角
corners[] = tx.position + (tx.right * width);
corners[] += tx.up * height;
corners[] += tx.forward * distance; // 左下角
corners[] = tx.position - (tx.right * width);
corners[] -= tx.up * height;
corners[] += tx.forward * distance; // 右下角
corners[] = tx.position + (tx.right * width);
corners[] -= tx.up * height;
corners[] += tx.forward * distance; return corners;
}

unity3d 获取相机视口四个角的坐标的更多相关文章

  1. GMap获取可视范围内四个角的坐标

    原理: 先获取控件的四个顶点,逐一将其转换成经纬度坐标. private void GetBonds() { //左上↖ PointLatLng pLeftTop = map1.FromLocalTo ...

  2. Android 二维码扫描框 加四个角及中间横线自动下滑

    红色为加四个角  黄色为扫描线自动下滑 /* * Copyright (C) 2008 ZXing authors * * Licensed under the Apache License, Ver ...

  3. [转]JAVA 根据经纬度算出附近的正方形的四个角的经纬度

    csv文件转化为geojson文件中,涉及到路测图的打点生成,打点是由一个个正方形组成,而正方形是由四个点组成的,这四个点根据经纬度和范围生成,具体的实现代码是从网上找来的: /** * * @par ...

  4. Bootstrap3基础 img-rounded 图片的四个角改成圆角

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  5. CF 429B B.Working out 四个角递推

    B. Working outtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutpu ...

  6. HTTP获取信息的四种方式

    HTTP 从网络获取信息的四种方式 GET GET指代你在浏览器中输入网址,浏览网站时做的事.例如,我们使用 http://www.baidu.com 的时候,可以将GET想象成他说:"hi ...

  7. HTML和JS完成页面点击四个角弹出管理页面

    实现方法1: HTML代码: <div class="top-left-corner"></div> <div class="top-rig ...

  8. android学习8——获取view在屏幕上的绝对坐标

    获取view在屏幕上的绝对坐标在调试时候非常有用. 看如下代码 public class AbsolutePosActivity extends Activity { @Override public ...

  9. 【淡墨Unity3D Shader计划】四 热带雨林的文章: 排除、深度测试、Alpha测试和基本雾编译

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/163.html 作者:毛星云 ...

随机推荐

  1. const变量的存储区及修改权限

    转自const变量的存储区及修改权限 [cpp] view plaincopy const int a = 1; int *p = const_cast<int*>(&a); *p ...

  2. Javascript与C#相互调用

    javascript调用C#代码 前台js调用后台代码方法,此方法只适用于后台方法的修饰符为public或protected,如果是其他修饰符会报错. >后台C#代码: protected in ...

  3. 奇怪的JS

    有的时候发现JS是一门很高深的语言,不是我等俗人可以学会,没有private,没有public不说,居然连Class都没有,这个世界就是这样,有的东西你不一定非要想通,也不一定非要剖根问底,有的时候你 ...

  4. str.match(regex)与regex.exec(str)对比解析,从此不再晕

    match属于字符串的方法,exec属于正则表达式的方法.其中regex是否有g标志的区别经常搞不清,所以测试记录下. 1.str.match(regex) regex中无g标志 返回一个数组,arr ...

  5. 【HDOJ】1356 The Balance

    扩展欧几里得的应用. /* 1356 */ #include <iostream> #include <sstream> #include <string> #in ...

  6. 【HDOJ】1086 You can Solve a Geometry Problem too

    数学题,证明AB和CD.只需证明C.D在AB直线两侧,并且A.B在CD直线两侧.公式为:(ABxAC)*(ABxAD)<= 0 and(CDxCA)*(CDxCB)<= 0 #includ ...

  7. URAL1029. Ministry(DP+路径)

    链接 路径麻烦啊 很多细节 倒回去搜一遍 卡了一节数据库.. #include <iostream> #include<cstdio> #include<cstring& ...

  8. a++与=++a的区别

    //a++;//a=a+1;              // ++a;//a=a+1;               //Console.WriteLine(a++);// Console.WriteL ...

  9. 《C#并行编程高级教程》第4章 并发集合 笔记

    这一章主要介绍了System.Collections.Concurrent下的几个类. ConcurrentQueue<T> 并发队列.完全无锁,使用CAS(compare-and-swa ...

  10. (转)如何正确使用C++多重继承

    http://bigasp.com/archives/486 如何正确使用C++多重继承 2011年06月17日 — Asp J 原创文章,转载请注明:转载自Soul Apogee本文链接地址:如何正 ...