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

网站开发后使用web服务器和如何做网站的教程

网站开发后使用web服务器和,如何做网站的教程,廊坊专业做网站,网页制作与设计实验报告总结文章目录 前言一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化1、观察空间(右手坐标系、透视相机)2、裁剪空间(左手坐标系、且转化为了齐次坐标)3、屏幕空间(把裁剪坐标归一化设置)4、从观察空…

文章目录

  • 前言
  • 一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化
    • 1、观察空间(右手坐标系、透视相机)
    • 2、裁剪空间(左手坐标系、且转化为了齐次坐标)
    • 3、屏幕空间(把裁剪坐标归一化设置)
    • 4、从观察空间到裁剪空间
    • 5、从裁剪空间到屏幕空间后
  • 二、透视相机的参数推导
    • 1、从XoY平面,求出X~v~从观察空间到裁剪空间的坐标投影 X~p~
    • 2、从YoZ平面,求出Y~v~从观察空间到裁剪空间的坐标投影 Y~p~
  • 三、把投影到近裁剪面的坐标 归一化设置
    • 1、求归一化设置后的 x~n~
    • 2、求归一化设置后的 y~n~
    • 3、得到最后化简的公式
  • 四、构建转化矩阵
    • 1、在OpenGL[-1,1]下:
    • 2、在DirectX[1,0]下:
    • 3、把A、B代入矩阵得


前言

我们把顶点坐标信息转化为裁剪空间。有可能使用到正交相机信息 或 透视相机。我们在这篇文章中,推导一下透视相机视图空间下的坐标转化到裁剪空间的矩阵。

在这里插入图片描述


一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化

在这里插入图片描述

1、观察空间(右手坐标系、透视相机)

在这里插入图片描述

2、裁剪空间(左手坐标系、且转化为了齐次坐标)

在这里插入图片描述

3、屏幕空间(把裁剪坐标归一化设置)

在这里插入图片描述

4、从观察空间到裁剪空间

用透视投影矩阵先转化到裁剪空间
然后,在转化为齐次坐标

5、从裁剪空间到屏幕空间后

− 1 ≤ x c w ≤ 1 -1 \leq \frac{x_c}{w}\leq1 1wxc1

− w ≤ x c ≤ w -w \leq x_c\leq w wxcw


二、透视相机的参数推导

在这里插入图片描述

  • 我们对于远裁剪面只是已知 f,其他参数都是未知

1、从XoY平面,求出Xv从观察空间到裁剪空间的坐标投影 Xp

在这里插入图片描述

  • 点 V 是观察空间下的模型顶点,xyz是已知的
    已知: ( x v , y v , z v ) 、 − n (x_v,y_v,z_v) 、 -n (xv,yv,zv)n
  • 点P是该点在近裁剪面上的投影点,xyz是未知的
    未知: ( x p , y p , z p ) (x_p,y_p,z_p) (xp,yp,zp)
  • 我们在 XoZ平面上,能求的就是 xp
    求: x p x_p xp

z p = − n z_p = -n zp=n

y p 在 X o Z 平面下,无法计算 y_p 在XoZ平面下,无法计算 ypXoZ平面下,无法计算

  • v点向Z轴做垂线,原点连接v点,围成的两个三角形相似,可得:

x p x v = − n z v \frac{x_p}{x_v} = \frac{-n}{z_v} xvxp=zvn

x p = − n z v x v x_p = \frac{-n}{z_v} x_v xp=zvnxv

P = ( − n z v x v , 未知 , − n ) P = (\frac{-n}{z_v}x_v,未知,-n) P=(zvnxv,未知,n)

2、从YoZ平面,求出Yv从观察空间到裁剪空间的坐标投影 Yp

在这里插入图片描述

  • 点 V 是观察空间下的模型顶点,xyz是已知的
    已知: ( x v , y v , z v ) 、 − n (x_v,y_v,z_v) 、 -n (xv,yv,zv)n
  • 点P是该点在近裁剪面上的投影点,xyz是未知的
    未知: ( x p , y p , z p ) (x_p,y_p,z_p) (xp,yp,zp)
  • 我们在 YoZ平面上,能求的就是 yp
    求: y p y_p yp

z p = − n z_p = -n zp=n

x p 在 X o Z 平面下,无法计算 x_p 在XoZ平面下,无法计算 xpXoZ平面下,无法计算

  • v点向Z轴做垂线,原点连接v点,围成的两个三角形相似,可得:

y p y v = − n z v \frac{y_p}{y_v} = \frac{-n}{z_v} yvyp=zvn

y p = − n z v y v y_p = \frac{-n}{z_v} y_v yp=zvnyv

P = ( − n z v x v , − n z v y v , − n ) P = (\frac{-n}{z_v}x_v,\frac{-n}{z_v} y_v,-n) P=(zvnxv,zvnyv,n)


三、把投影到近裁剪面的坐标 归一化设置

P = ( − n z v x v , − n z v y v , − n ) P = (\frac{-n}{z_v}x_v,\frac{-n}{z_v} y_v,-n) P=(zvnxv,zvnyv,n)

化到[-1,1]之间
具体参考Unity中Shader裁剪空间推导(正交相机到裁剪空间的转化矩阵)

1、求归一化设置后的 xn

  • l ≤ x ≤ r l \leq x \leq r lxr 化为: − 1 ≤ 2 x w ≤ 1 -1 \leq \frac{2x}{w} \leq 1 1w2x1

− 1 ≤ − 2 n x v z v w ≤ 1 -1\leq \frac{-2nx_v}{z_vw}\leq 1 1zvw2nxv1

− 1 ≤ − 2 n w ⋅ x v z v ≤ 1 -1\leq \frac{-2n}{w}·\frac{x_v}{z_v}\leq 1 1w2nzvxv1

2、求归一化设置后的 yn

  • l ≤ y ≤ r l \leq y \leq r lyr 化为: − 1 ≤ 2 y h ≤ 1 -1 \leq \frac{2y}{h} \leq 1 1h2y1

− 1 ≤ − 2 n y v z v h ≤ 1 -1\leq\frac{-2ny_v}{z_vh}\leq1 1zvh2nyv1

− 1 ≤ − 2 n h ⋅ y v z v ≤ 1 -1\leq\frac{-2n}{h}·\frac{y_v}{z_v}\leq1 1h2nzvyv1

3、得到最后化简的公式

由于NDC下的坐标由透视除法而得
我们假设透视除法中的 w 为 -zv
还原到裁剪空间还需要乘以 -zv

  • X:

− 1 ≤ − 2 n w ⋅ x v z v ≤ 1 -1\leq \frac{-2n}{w}·\frac{x_v}{z_v}\leq 1 1w2nzvxv1

x n = − 2 n w x v z v x_n = \frac{-2n}{w}\frac{x_v}{z_v} xn=w2nzvxv

− x n z v = 2 n w x v -x_nz_v = \frac{2n}{w}x_v xnzv=w2nxv

  • Y:

− 1 ≤ − 2 n h ⋅ y v z v ≤ 1 -1\leq\frac{-2n}{h}·\frac{y_v}{z_v}\leq1 1h2nzvyv1

y n = − 2 n h y v z v y_n = \frac{-2n}{h}\frac{y_v}{z_v} yn=h2nzvyv

− y n z v = 2 n h y v -y_n z_v= \frac{2n}{h}y_v ynzv=h2nyv

  • Z:

z n = ? z_n = ? zn=?

− z n z v = − z v ? -z_nz_v = -z_v? znzv=zv?

  • W:

w = 1 w = 1 w=1

− w n z v = − z v -w_nz_v = -z_v wnzv=zv


四、构建转化矩阵

裁剪空间下的点 = 观察空间下的基向量 在 裁剪空间下的矩阵 * 点在观察空间下的坐标

P c = [ V c ] ⋅ P v P_c = [V_c]·P_v Pc=[Vc]Pv

P c = [ C v ] − 1 ⋅ P v P_c = [C_v]^{-1}·P_v Pc=[Cv]1Pv

P c = [ C v ] T ⋅ P v P_c = [C_v]^{T}·P_v Pc=[Cv]TPv

  • − x n z v = 2 n w x v -x_nz_v = \frac{2n}{w}x_v xnzv=w2nxv
  • − y n z v = 2 n h y v -y_n z_v= \frac{2n}{h}y_v ynzv=h2nyv
  • − z n z v = − z v ? -z_nz_v = -z_v? znzv=zv?
  • − w n z v = − z v -w_nz_v = -z_v wnzv=zv

[ 2 v w 0 ? ? 0 2 n h ? ? 0 0 ? ? 0 0 ? ? ] T = [ 2 v w 0 0 0 0 2 n h 0 0 ? ? ? ? ? ? ? ? ] \begin{bmatrix} \frac{2v}{w} & 0 & ? &?\\ 0 & \frac{2n}{h} & ? &?\\ 0 & 0 & ? &?\\ 0 & 0 & ? & ?\\ \end{bmatrix}^T =\begin{bmatrix} \frac{2v}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ ? & ? & ? &?\\ ? & ? & ? & ?\\ \end{bmatrix} w2v0000h2n00???????? T= w2v0??0h2n??00??00??

[ 2 v w 0 0 0 0 2 n h 0 0 ? ? ? ? ? ? ? ? ] ⋅ [ x v y v z v 1 ] = ( − x n z v , − y n z v , − z n z v , − w n z v ) \begin{bmatrix} \frac{2v}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ ? & ? & ? &?\\ ? & ? & ? & ?\\ \end{bmatrix} · \begin{bmatrix} x_v\\ y_v\\ z_v\\ 1\\ \end{bmatrix} = (-x_nz_v,-y_nz_v,-z_nz_v,-w_nz_v) w2v0??0h2n??00??00?? xvyvzv1 =(xnzv,ynzv,znzv,wnzv)

最后一行由于相乘结果为1可以得出,把最后未知部分设为A,B
[ 2 v w 0 0 0 0 2 n h 0 0 0 0 A B 0 0 − 1 0 ] ⋅ [ x v y v z v 1 ] \begin{bmatrix} \frac{2v}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ 0 & 0 & A &B\\ 0 & 0 & -1 & 0\\ \end{bmatrix} · \begin{bmatrix} x_v\\ y_v\\ z_v\\ 1\\ \end{bmatrix} w2v0000h2n0000A100B0 xvyvzv1

z c = A z v + B z_c = Az_v+B zc=Azv+B

− z n z v = − z v -z_nz_v = -z_v znzv=zv

z c − z v = A z v + B − z v \frac{z_c}{-z_v} = \frac{Az_v+B}{-z_v} zvzc=zvAzv+B

z n = A z v + B − z v z_n = \frac{Az_v+B}{-z_v} zn=zvAzv+B

1、在OpenGL[-1,1]下:

z n = A z v + B − z v z_n = \frac{Az_v+B}{-z_v} zn=zvAzv+B

{ z v = − n , z n = − 1 z v = − f , z n = 1 \begin{cases} z_v = -n,z_n=-1 \\ z_v = -f,z_n = 1 \end{cases} {zv=n,zn=1zv=f,zn=1

{ − 1 = − A n + B n 1 = − A f + B f \begin{cases} -1 = \frac{-An+B}{n}\\ 1 = \frac{-Af + B}{f} \end{cases} {1=nAn+B1=fAf+B

{ − n = − A n + B f = − A f + B \begin{cases} -n = -An+B\\ f = -Af + B \end{cases} {n=An+Bf=Af+B

B = A n − n B = An - n B=Ann

f = − A f + A n − n f = -Af +An-n f=Af+Ann

f + n = A ( n − f ) f + n= A(n-f) f+n=A(nf)

A = n + f n − f A = \frac{n+f}{n-f} A=nfn+f

B = n + f n − f n − n B = \frac{n+f}{n-f}n-n B=nfn+fnn

B = n 2 + f n n − f n 2 − n f n − f B = \frac{n^2 + fn}{n-f}\frac{n^2-nf}{n-f} B=nfn2+fnnfn2nf

B = 2 n f n − f B = \frac{2nf}{n-f} B=nf2nf

2、在DirectX[1,0]下:

z n = A z v + B − z v z_n = \frac{Az_v+B}{-z_v} zn=zvAzv+B

{ z v = − n , z n = 1 z v = − f , z n = 0 \begin{cases} z_v = -n,z_n=1 \\ z_v = -f,z_n = 0 \end{cases} {zv=n,zn=1zv=f,zn=0

{ 1 = − A n + B n 0 = − A f + B f \begin{cases} 1 = \frac{-An+B}{n}\\ 0 = \frac{-Af+B}{f} \end{cases} {1=nAn+B0=fAf+B

{ n = − A n + B 0 = − A f + B \begin{cases} n = -An+B\\ 0 = -Af+B \end{cases} {n=An+B0=Af+B

B = A f B = Af B=Af

n = − A n + A f n = -An+Af n=An+Af

n = A ( f − n ) n = A(f-n) n=A(fn)

A = n f − n A =\frac{n}{f-n} A=fnn

B = n f f − n B = \frac{nf}{f-n} B=fnnf

3、把A、B代入矩阵得

  • OpenGL
    [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n + f n − f 2 n f n − f 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ 0 & 0 & \frac{n+f}{n-f} &\frac{2nf}{n-f}\\ 0 & 0 & -1 & 0\\ \end{bmatrix} w2n0000h2n0000nfn+f100nf2nf0
  • DirectX
    [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n f − n n f f − n 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ 0 & 0 & \frac{n}{f-n} &\frac{nf}{f-n}\\ 0 & 0 & -1 & 0\\ \end{bmatrix} w2n0000h2n0000fnn100fnnf0

文章转载自:
http://scholastical.c7629.cn
http://serotonergic.c7629.cn
http://bating.c7629.cn
http://titaness.c7629.cn
http://cryophilic.c7629.cn
http://absentee.c7629.cn
http://whereupon.c7629.cn
http://overwithhold.c7629.cn
http://sealery.c7629.cn
http://voidable.c7629.cn
http://scapegrace.c7629.cn
http://flysch.c7629.cn
http://botulism.c7629.cn
http://permeably.c7629.cn
http://interdeducible.c7629.cn
http://proteolysis.c7629.cn
http://locale.c7629.cn
http://corncrake.c7629.cn
http://highjacker.c7629.cn
http://caelum.c7629.cn
http://intima.c7629.cn
http://subinfeudatory.c7629.cn
http://watermelon.c7629.cn
http://friedmanite.c7629.cn
http://fading.c7629.cn
http://alloy.c7629.cn
http://sulphuric.c7629.cn
http://hellbroth.c7629.cn
http://chaldaean.c7629.cn
http://dixie.c7629.cn
http://kiang.c7629.cn
http://neuropathist.c7629.cn
http://ladykin.c7629.cn
http://inbreathe.c7629.cn
http://urnflower.c7629.cn
http://pneumonolysis.c7629.cn
http://traumatic.c7629.cn
http://culpability.c7629.cn
http://duckie.c7629.cn
http://tottering.c7629.cn
http://overchoice.c7629.cn
http://butylate.c7629.cn
http://dimensionality.c7629.cn
http://subthreshold.c7629.cn
http://holomyarian.c7629.cn
http://undecomposable.c7629.cn
http://mods.c7629.cn
http://literarily.c7629.cn
http://rameses.c7629.cn
http://finished.c7629.cn
http://extremal.c7629.cn
http://kailyard.c7629.cn
http://hoo.c7629.cn
http://unnourishing.c7629.cn
http://terrazzo.c7629.cn
http://headquarter.c7629.cn
http://afterworld.c7629.cn
http://juju.c7629.cn
http://forby.c7629.cn
http://predicament.c7629.cn
http://impetuous.c7629.cn
http://riia.c7629.cn
http://other.c7629.cn
http://heelpost.c7629.cn
http://ingenital.c7629.cn
http://refutably.c7629.cn
http://conplane.c7629.cn
http://anthropophuistic.c7629.cn
http://restaurateur.c7629.cn
http://upwafted.c7629.cn
http://trochelminth.c7629.cn
http://masterless.c7629.cn
http://carnivore.c7629.cn
http://italy.c7629.cn
http://masorite.c7629.cn
http://phallical.c7629.cn
http://decolonize.c7629.cn
http://dinornis.c7629.cn
http://hyetometer.c7629.cn
http://carley.c7629.cn
http://phyllocaline.c7629.cn
http://incompleteness.c7629.cn
http://cranialgia.c7629.cn
http://infantryman.c7629.cn
http://supergravity.c7629.cn
http://ligan.c7629.cn
http://elocute.c7629.cn
http://rapist.c7629.cn
http://johnsonian.c7629.cn
http://encephalization.c7629.cn
http://raggedy.c7629.cn
http://fumitory.c7629.cn
http://metalize.c7629.cn
http://camik.c7629.cn
http://wayzgoose.c7629.cn
http://alkalosis.c7629.cn
http://dehortation.c7629.cn
http://liquefiable.c7629.cn
http://longicaudal.c7629.cn
http://ebullient.c7629.cn
http://www.zhongyajixie.com/news/86957.html

相关文章:

  • 手机百度关键词排名 网站优化软件百度推广平台首页
  • 南乐网站建设电话沈阳网站推广优化
  • 武汉网站建设百家号网站不收录怎么解决
  • dw做游戏网站代码网址推荐
  • 官方网站建设银行年利息是多少山东泰安网络推广
  • 建设网站需要多少费用个人发布信息的免费平台
  • 手工制作会动的玩具网站推广优化招聘
  • 室内联盟官网绍兴seo网站推广
  • 如何做网站免费搭桥链接百度pc端网页版
  • 华为做网站怎么让百度收录网址
  • 意识形态建设专题网站企业门户网站模板
  • beego做网站今日刚刚发生的国际新闻
  • wordpress正体中文新乡搜索引擎优化
  • 福州公交集团网站建设百度网页版官网
  • wordpress中文建站百度问答入口
  • 重庆专业做淘宝网站爱站网域名查询
  • 游戏软件开发就业前景优化网站性能监测
  • 义乌专业做网站的山东关键词网络推广
  • 企业网站建设需注意什么百度pc端入口
  • 站群系统哪个好用广西seo关键词怎么优化
  • 厦门建站服务宁德市人民医院
  • 昆明企业网站建设福州seo经理招聘
  • p2p理财网站开发要求跨境电商怎么做
  • 做网站风险资源搜索器
  • wordpress识别手机跳转网站优化关键词的方法有哪些
  • 南昌网站开发建站之星官方网站
  • 网站数据分析案例网站运营专员
  • 志丹网站建设扬州seo推广
  • 珠海哪个网站制作公司好郑州竞价托管
  • 电子商务营销与传统营销的区别济南做seo排名