球形坐标和Cartesian 坐标的转换 spherical coordinate
spherical coordinate 和cartesian坐标的转换, 个人认为在控制camera的时候最为有用,比如CS中的操作方式, 鼠标负责方向的改变,其恰恰就是球形坐标的改变。而camera的位置改变就是cartesian的改变,所以这两者的转换就必不可少了。
以下是基本的数学公式,非常简单。
Thus, we can convert from spherical to Cartesian coordinates by
We convert from Cartesian to spherical coordinates by
我的代码,比较烂不要见笑, 没什么注释,比较简单大家应该可以看懂:
//_horizon, _vertical是球形坐标的改变大小
void AO_Camera::moveRatate( float _horizon, float _vertical )
{
float r, s, thi, theta, x, y, z;
x = m_forwardVector.x;
y = m_forwardVector.y;
z = m_forwardVector.z;
r = D3DXVec3Length( &m_forwardVector);
s = D3DXVec3Length( &D3DXVECTOR3( x, 0.0f, z) );
thi = acos( y / r );
//限制theta的改变范围
if ( x <= 0 )
{
theta = PI - (float)asinf( z / s );
}
else
{
theta = (float)asinf( z / s );
}
thi = thi + _vertical;
if ( thi <= PRECISION )
{
thi = PRECISION;
}
else if( thi >= PI - PRECISION )
{
thi = PI - PRECISION;
}
theta = theta - _horizon;
m_forwardVector.x = r * sin( thi ) * cos( theta );
m_forwardVector.z = r * sin( thi ) * sin( theta );
m_forwardVector.y = r * cos( thi );
m_LookAt = m_EyePos + m_forwardVector;
}
作者> chiyuwang
转载于:https://www.cnblogs.com/chiyuwang/archive/2006/09/04/494676.html
球形坐标和Cartesian 坐标的转换 spherical coordinate相关推荐
- Unity学习笔记 球形全景图平面像素坐标与三维坐标系上的坐标之间的转换
前言 本文将讲解如何通过球形全景图上的二维坐标通过换算得到三维坐标系上的三维坐标.具体场景就是,已知道一张全景图上某个点的像素位置(px,py),最终可以算出该点对应在球体上的三维坐标(X,Y,Z). ...
- gps84转换gcj02公式_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换...
//定义一些常量 var x_PI = 3.14159265358979324 * 3000.0 / 180.0; var PI = 3.1415926535897932384626; var a = ...
- arcgis导入坐标点转面_ArcGIS问题:如何将坐标点或者点文件转换成线、面文件
ArcGIS 问题:如何将坐标点或者点文件转换成线.面文件 工作过程中,如果获得了一批点坐标信息(如通过 GPS 获得的点位坐标) ,如何将这些坐标信息直接转换 成 Arcmap 下面的点呢?或者说就 ...
- 使用QGIS插件转换火星坐标、百度坐标和WGS84坐标
最近因工作需要,分别从高德和百度下载了一批POI点数据.由于高德地图采用国家测绘地理信息局GCJ02坐标系(即俗称火星坐标系),百度采用自己的BD09坐标系,而国际来源地图大多采用WGS84坐标系,导 ...
- android gps 火星坐标,GPS真实坐标与火星地图坐标/百度地图坐标的转换
#include #include #include static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; HardwareSerial ss( ...
- MNI坐标,world坐标和矩阵坐标互相转换
首先矩阵坐标和世界坐标的变换公式需要知道两个信息,图像原点坐标(origin)和空间分辨率(spacing) 假设矩阵坐标(x1,y1,z1),世界坐标(x2,y2,z2),原点坐标(x0,y0,z0 ...
- Cesium球心坐标与本地坐标系经纬转换的数学原理—矩阵变换
之前整理过:<透析矩阵,由浅入深娓娓道来-高数-线性代数-矩阵>.<三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理>,这次转载 FuckGIS的<Cesium之 ...
- 经纬度坐标与高斯坐标的转换代码
经纬度坐标与高斯坐标的转换代码 /* 功能说明: 将绝对高斯坐标(y,x)转换成绝对的地理坐标(wd,jd). */ // double y; 输入参数: 高斯坐标的横坐标,以米 ...
- C#高德地图坐标和百度坐标互相转换
C#高德地图坐标和百度坐标互相转换 public class CoordinateConvert{private static double xPi = 3.14159265358979324 * 3 ...
最新文章
- jquery 操作ajax 相关方法
- lua 多条件_【LUA】只需花费你半天时间
- IOS和Andriod手机浏览器内核
- macOS 如何正确安装 Xcode 合适版本
- 厉害!Java集合框架综述,这篇让你吃透!
- Kettle使用_18 分组组件计算百分位数
- Spring5参考指南: Resources
- 使用Log4J监控系统日志邮件警报
- 2022美国大学生数学建模竞赛
- linux 安装qq2014,Ubuntu14.04安装wine QQ
- 每周分享第 37 期
- deecamp考试题
- 关于o1,o2,o3
- hive基本用法及细节记录
- C语言 文件操作 深度解析 #重点知识:文件操作函数的使用#
- 化学计算机模拟计算,计算机化工辅助计算
- 知识竞赛软件使用说明
- 译(二十六)-Python怎么去除末尾的换行符?
- 对称数(自己的算法)
- OSG 自定义场景漫游示例
热门文章
- 三相四线怎样查漏电_老电工支招!漏电保护器的接线方法
- python多线程写同一个文件_Python多线程快速写入文件,python,飞速
- Gensee SDK RoleType详解
- 判断星座PHP,php根据日期判断星座的函数分享_PHP教程
- 计算机与编程导论,计算机科学与编程导论
- php ip 短时间 重复,php 限制同一个IP 一段时间不能评论多次,能给我详细解决的...
- 长沙医学院学位计算机考试内容,湖南长沙医学院2017年9月计算机等级考试报名时间...
- vue如何配置服务器端跨域_vue项目里如何配置本地代理实现跨域请求
- HTML+CSS+JS实现 ❤️3D洞穴无限延伸动画特效❤️
- html htc控件详解,*.HTC 文件的简单介绍-网页设计,HTML/CSS