3D透视:最简单易懂的成像原理及实现教程

3D透视:最简单易懂的成像原理及实现教程

写在前面

这篇文章已经构思很久了,一直不知道该如何下笔,就寻思着写了再说。由于本人英语不怎么好,有些变量命名会比较随意。如果这篇博客有什么错误,请指正,感谢。

原理介绍

3D透视图说到底是模拟人眼成像。将人眼作为视点O,以视点为三维坐标系的原点,过原点做一条射线,这条射线称为视线,过视线做一个垂直视线的平面,称为视平面P,P与视线的交点称为C,且OC长度已知,称为视距。从O做射线过P的四个顶点在空间中形成一个四棱锥,P以下的部分形成一个棱台,位于这个棱台内的点与O连线,这条线段与P的交点M即使人眼中点A所成的像。如下图所示。

在这里插入图片描述

一般模型

三维坐标系中一条过原点的射线可以通过它与平面ZOY、平面ZOX的成角来确定,与平面ZOY的成角我称为ha,与平面ZOX的成角我称为va
一般模型的特殊情况是视线的va、ha均为0时候。

计算一般模型时直线OA在P上的点坐标

  1. 做A(ax, ay, az)在Z轴上的垂线与Z轴交于点N,计算这条垂线的长度:AN = sqr(ax ^ 2 + ay ^ 2)
  2. 计算ON的长度:因为N在Z轴上所以ON = abs(az)
  3. 做M垂直于Z轴于V,求MV的长度:因为三角形ONA于三角形OVM相似,所以VM与AN成比例,既:MV = AN / ON * OC
  4. 求mx:mx = ax / AN* MV
  5. 求my:my = ay / AN* MV
  6. 求mz:在一般模型中mz并不是那么重要——毕竟P上的点的z坐标都等于OC
  7. 将点绘制在屏幕上,这不难理解。P是和XOY平面平行的,所以可以直接用点M的坐标来绘制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dis2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值