计算机图形学线性代数相关概念

Transformation(2D-Model)

Scale(缩放)

在这里插入图片描述

[ x ′ y ′ ] = [ s 0 0 s ] [ x y ] (等比例缩放) \left[ \begin{matrix} x' \\ y' \end{matrix} \right]= \left[ \begin{matrix} s & 0 \\ 0 & s \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right] \tag{等比例缩放} [xy]=[s00s][xy](等比例缩放)

在这里插入图片描述

[ x ′ y ′ ] = [ s x 0 0 s y ] [ x y ] (x,y不同比例缩放) \left[ \begin{matrix} x' \\ y' \end{matrix} \right] =\left[ \begin{matrix} s_x & 0 \\ 0 & s_y \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right] \tag{x,y不同比例缩放} [xy]=[sx00sy][xy](x,y不同比例缩放)

Reflection(反转)

在这里插入图片描述

[ x ′ y ′ ] = [ − 1 0 0 1 ] [ x y ] (沿y轴对称反转) \left[ \begin{matrix} x' \\ y' \end{matrix} \right] =\left[ \begin{matrix} -1 & 0 \\ 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right] \tag{沿y轴对称反转} [xy]=[1001][xy](沿y轴对称反转)

沿x轴或原点对称同理

Shear(切变)

如下图,切变的跨度(a)和y是成正比例的。坐标归一化后,也就是x每次加一个y倍的a

在这里插入图片描述

[ x ′ y ′ ] = [ 1 a 0 1 ] [ x y ] (坐标归一化后的操作) \left[ \begin{matrix} x' \\ y' \end{matrix} \right] =\left[ \begin{matrix} 1 & a \\ 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right] \tag{坐标归一化后的操作} [xy]=[10a1][xy](坐标归一化后的操作)

Rotate(旋转)

在这里插入图片描述

R θ = [ c o s θ − s i n θ s i n θ c o s θ ] R_\theta =\left[ \begin{matrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{matrix} \right] Rθ=[cosθsinθsinθcosθ]

Homogenous coordinates(齐次坐标)

为什么引入齐次坐标?
区分向量和点,更易于表示仿射变换

仿射变换就是线性的几何变换加上一个平移,包括旋转、缩放、平移、切变。

齐次坐标的意义就是让平移变换和其它线性变换一样,都能表述成一个矩阵相乘的形式!

具体做法:

Add a third coordinate (w-coordinate)

  • 2D point = ( x , y , 1 ) T (x,y,1)^T (x,y,1)T
  • 2D vector = ( x , y , 0 ) T (x,y,0)^T (x,y,0)T

向量具有平移不变性,只表示方向和大小!

运算过程中 w 分量的值:

  • vector + vector = vector 向量+向量结果依旧为向量,w此时仍为0
  • point - point = vector 点-点结果为向量,w此时为0
  • point + vector = point 点+向量结果为点,w此时为1
  • point + point = ?? 点+点 无意义? ,w此时为2
    • 扩充意义:点 + 点 = 两个点的中点

w ! = 0 , [ x y w ] = [ x / w y / w w / w ] = [ x / w y / w 1 ] w != 0, \left[ \begin{matrix} x \\ y \\ w \end{matrix} \right] = \left[ \begin{matrix} x/w \\ y/w \\ w/w \end{matrix} \right] =\left[ \begin{matrix} x/w \\ y/w \\ 1 \end{matrix} \right] w!=0, xyw = x/wy/ww/w = x/wy/w1

Translation(平移)

translation is NOT linear transform!

平移不是线性变换,线性变换的对象是向量,向量是不存在空间位置的!平移是对点进行操作。

在这里插入图片描述

[ x ′ y ′ w ′ ] = [ 1 0 t x 0 1 t y 0 0 1 ] [ x y w ] = [ x + t x y + t y w ] (向量的w为0,点的w为1) \left[ \begin{matrix} x' \\ y' \\ w' \end{matrix} \right] =\left[ \begin{matrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ w \end{matrix} \right] = \left[ \begin{matrix} x + t_x \\ y + t_y \\ w \end{matrix} \right] \tag{向量的w为0,点的w为1} xyw = 100010txty1 xyw = x+txy+tyw (向量的w0,点的w1)

引入齐次坐标后的变换矩阵

Scale

S ( s x , s y ) = [ s x 0 0 0 s y 0 0 0 1 ] S(s_x, s_y) =\left[ \begin{matrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{matrix} \right] S(sx,sy)= sx000sy0001

Rotation

R θ = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] R_\theta =\left[ \begin{matrix} cos\theta & -sin\theta & 0\\ sin\theta & cos\theta & 0 \\ 0 & 0 & 1 \end{matrix} \right] Rθ= cosθsinθ0sinθcosθ0001

Translation

T ( t x , t y ) = [ 1 0 t x 0 1 t y 0 0 1 ] T(t_x, t_y)= \left[ \begin{matrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{matrix} \right] T(tx,ty)= 100010txty1

Other

逆变换

执行一个操作,再执行这个操作的逆操作,相当于不变。

在这里插入图片描述

变换顺序

根据矩阵的分配率性质,多个操作可以合并成一个矩阵。

在这里插入图片描述

变换组合到一个矩阵时,先进行线性变换,再进行平移。

[ x ′ y ′ 1 ] = [ a b t x c d t y 0 0 1 ] [ x y 1 ] \left[ \begin{matrix} x' \\ y' \\ 1 \end{matrix} \right] = \left[ \begin{matrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ 1 \end{matrix} \right] xy1 = ac0bd0txty1 xy1

变换的分解

Q:如何围绕给定点进行旋转(非原点)?

A:1.平移到原点 2.旋转 3.反向平移复位

在这里插入图片描述

Transformation(3D-Model)

Use homogeneous coordinates again:

  • 3D point = ( x , y , z , 1 ) T (x,y,z,1)^T (x,y,z,1)T
  • 3D vector = ( x , y , z , 0 ) T (x,y,z,0)^T (x,y,z,0)T

w 分量不为0时的扩充意义:
w ! = 0 , [ x y z w ] = [ x / w y / w z / w w / w ] = [ x / w y / w z / w 1 ] w != 0, \left[ \begin{matrix} x \\ y \\ z \\ w \end{matrix} \right]=\left[ \begin{matrix} x/w \\ y/w \\ z/w \\ w/w \end{matrix} \right] =\left[ \begin{matrix} x/w \\ y/w \\ z/w \\ 1 \end{matrix} \right] w!=0, xyzw = x/wy/wz/ww/w = x/wy/wz/w1

Use 4x4 matrices for affine(仿射) transformations

[ x ′ y ′ z ′ 1 ] = [ a b c t x d e f t y g h i t z 0 0 0 1 ] [ x y z 1 ] \left[ \begin{matrix} x' \\ y' \\ z' \\ 1 \end{matrix} \right] =\left[ \begin{matrix} a & b & c & t_x \\ d & e & f & t_y \\ g & h & i & t_z \\ 0 & 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ z \\ 1 \end{matrix} \right] xyz1 = adg0beh0cfi0txtytz1 xyz1

先进行线性变换,再进行平移。

Rotation around x,y or z-axis沿着标准轴旋转

在这里插入图片描述

R x ( α ) = [ 1 0 0 0 0 c o s α − s i n α 0 0 s i n α c o s α 0 0 0 0 1 ] − − − − − − − − − − − − − − − − − − − − − − − − − R y ( α ) = [ c o s α 0 s i n α 0 0 1 0 0 − s i n α 0 c o s α 0 0 0 0 1 ] − − − − − − − − − − − − − − − − − − − − − − − − − R z ( α ) = [ c o s α − s i n α 0 0 s i n α c o s α 0 0 0 0 1 0 0 0 0 1 ] R_x(\alpha) =\left[ \begin{matrix} 1 & 0 & 0 & 0 \\ 0 & cos\alpha & -sin\alpha & 0 \\ 0 & sin\alpha & cos\alpha & 0 \\ 0 & 0 & 0 & 1 \\ \end{matrix} \right] \\ \\ ------------------------- \\ R_y(\alpha) =\left[ \begin{matrix} cos\alpha & 0 & sin\alpha & 0 \\ 0 & 1 & 0 & 0 \\ -sin\alpha & 0 & cos\alpha & 0 \\ 0 & 0 & 0 & 1 \\ \end{matrix} \right] \\ \\ ------------------------- \\ R_z(\alpha) =\left[ \begin{matrix} cos\alpha & -sin\alpha & 0 & 0 \\ sin\alpha & cos\alpha & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{matrix} \right] Rx(α)= 10000cosαsinα00sinαcosα00001 Ry(α)= cosα0sinα00100sinα0cosα00001 Rz(α)= cosαsinα00sinαcosα0000100001

Compose any 3D rotation from Rx,Ry, Rz沿着任意轴旋转

在这里插入图片描述

如图,α β γ分别对应roll pitch yaw(欧拉角)。

  • Roll:翻滚,我们以圣地安列斯里最恶心的开飞机为例,Roll将你的飞机机头朝向不变,进行机身的转动,机翼从水平到竖直这种。
  • Pitch:是将你的飞机机头向上抬或者向下降,范围在-90 ~ 90 .
  • Yaw:是水平方向上转动机头的朝向,范围在0~360。

图形学中有一个办法,可以把任意的一个旋转分解再X,Y,Z三轴上,分别做旋转从而得到了一个公式,也就是罗德里德斯旋转公式:

在这里插入图片描述

罗德里德斯旋转公式给了我们一个旋转矩阵,它定义了一个旋转轴 n 和一个旋转角度 α。

我们默认旋转轴 n 是过原点的,也就是起点在原点上,方向是n这个方向,旋转角度为α。

如果想要沿着任意轴旋转,但该轴起点不是原点,则需要先将所有的物体都进行平移是的旋转轴的起点为原点,然后进行旋转,最后再平移回去。

矩阵N是两个向量叉乘写成矩阵形式。

Transformation(View/Camera)

前置概念Ⅰ旋转矩阵的逆矩阵等于它的转置矩阵
R θ = [ c o s θ − s i n θ s i n θ c o s θ ] − − − − − − − − − − − − − R − θ = [ c o s θ s i n θ − s i n θ c o s θ ] ★ R − θ = R θ − 1 = R θ T R_\theta = \left[ \begin{matrix} cos\theta & -sin\theta\\ sin\theta & cos\theta \\ \end{matrix} \right] \\ \\ ------------- \\ R_{-\theta} = \left[ \begin{matrix} cos\theta & sin\theta\\ -sin\theta & cos\theta \\ \end{matrix} \right] \\ \\ ★ R_{-\theta}=R_{\theta}^{-1}=R_{\theta}^T Rθ=[cosθsinθsinθcosθ]Rθ=[cosθsinθsinθcosθ]Rθ=Rθ1=RθT
如上公式,从矩阵中我们可以发现 R − θ = R θ T R_{-\theta}=R_{\theta}^T Rθ=RθT

而在图形学中我们知道 R θ R_{\theta} Rθ R − θ R_{-\theta} Rθ 是一个互逆的操作

因此 R − θ = R θ − 1 = R θ T R_{-\theta}=R_{\theta}^{-1}=R_{\theta}^T Rθ=Rθ1=RθT

因此我们可以得出 旋转矩阵的逆等于它的转置矩阵 这一定义,之后的内容我们会用到这个性质。

在数学上,一个矩阵的逆等于它的转置矩阵我们称其为正交矩阵

前置概念Ⅱ变换过程

我们知道我们需要将三维空间中摄像机看到的场景最终变为一张2D的图片给显示在screen上,我们来了解具体发生了什么变换。具体是去了解如何从3D 变为 2D。

其中的过程类似于拍照片:

  1. Model Transformation: 让人们集合在一起并摆好姿势(设置好场景)
  2. View Transformation : 找到一个拍摄的角度(设置好camera位置和看的方向)
  3. Projection Transformation: 拍照(将camera看向的3D内容变为2D照片)

我们主要对第二步进行讲解。

首先需要定义好Camera

  • 设置好相机的位置 Position
  • 设置好相机看向的方向,即 look-at / gaze direction
  • 我们除了相机指向的方向我们还要设置一个 up-direction,因为我们需要从不同角度看向场景,就像你拿着手机倾斜45度或者反着拍,最后的照片是不一样的。

在这里插入图片描述

至此我们通过一个点(向量),两个(单位)向量将相机给固定下来了

我们知道,当相机和物体进行相对运动时,不论怎么移动二者,我们看到的结果是一样的。

在这里插入图片描述

因此我们将相机从原本位置移动到原点位置,使得其Look-at direction看向 -z 方向,up-directiony 正半轴。相机移动后,物体/场景跟着相机进行相同的移动,这样虽然进行了移动,但最终看到的结果是相同的

这样做是因为可以简化很多操作,相机在(0,0,0)位置有很多的好处。

在这里插入图片描述

假设我们现在有一个相机,在 e 点上,gaze direction 是向量 gup directiont,我们要把点 e 给变成原点,向量 g-z 轴上,ty 正半轴上。

其基本思想是:

  • 进行平移,将e点移到原点。

  • 旋转g-z方向上。

  • 旋转t+y方向上。

  • 旋转 g 叉乘 t 得到的向量 到+x方向上。

在这里插入图片描述

由于我们说过一般是先进行线性变换再进行平移的,但在这里是先平移再线性变换,所以我们将T写在最右边。

平移矩阵很好写,难的是如何将g,t,g×t旋转到x,y,-z上。这时可以反过来想,我们知道g,t,g×t是如何用(x,y,z)表示的,我们只需要求出x,y,-z旋转到g,t,g×t的旋转矩阵,再加上旋转矩阵的逆矩阵 是这个旋转矩阵的转置矩阵这条性质,就可以巧妙的求出g,t,g×t给旋转到x,y,-z上的旋转矩阵。

View Transform主要做两步

  • 移动camera,使其位于world space的坐标原点,同样的将其余场景也进行相同的变换使其到应到的位置。
  • 旋转camera,使得摄像机坐标系与世界坐标系重合。

Transformation(Projection)

Orthographic projection (正交投影) :多用于工程制图

Perspective projection(透视投影):符合人眼的成像,会产生近大远小的效果,看起来平行线不会平行,延长的话会相交。

在这里插入图片描述

正交投影和透视投影本质的区别就是:是否有近大远小的效果

在这里插入图片描述

Orthographic projection

在这里插入图片描述

正交投影的思想:

Ⅰ. 我们设置camera于原点,看向-Z方向,向上是Y轴

Ⅱ. 然后我们舍弃Z轴也就是让所有物体都Z都等于0,从而我们实现了所有物体只在X轴和Y轴上

Ⅲ. 将其挤压到 [ − 1 , 1 ] ∗ [ − 1 , 1 ] [-1, 1] * [-1, 1] [1,1][1,1]这么一个正方形内.

在这里插入图片描述

图形学中的实际操作:

我们定义一个立方体,left,right bottom,top far,near(但是注意我们是看向-Z方向的,far的Z轴值小,near的值大)

然后将其的中心平移到原点出,最后将其给拉成一个 [ − 1 , 1 ] 3 [-1, 1]^3 [1,1]3的正则立方体。

具体的操作矩阵:

M o r t h o = [ 2 r − l 0 0 0 0 2 t − b 0 0 0 0 2 n − f 0 0 0 0 1 ] [ 1 0 0 − r + l 2 0 1 0 − t + b 2 0 0 1 − n + f 2 0 0 0 1 ] M_{ortho} =\left[ \begin{matrix} {2 \over {r-l}} & 0 & 0 & 0 \\ 0 & {2 \over {t-b}} & 0 & 0 \\ 0 & 0 & {2 \over {n-f}} & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} 1 & 0 & 0 & -{{r+l} \over 2} \\ 0 & 1 & 0 & -{{t+b} \over 2} \\ 0 & 0 & 1 & -{{n+f} \over 2} \\ 0 & 0 & 0 & 1 \end{matrix} \right] Mortho= rl20000tb20000nf200001 1000010000102r+l2t+b2n+f1

具体来说第一个右侧矩阵是反向平移操作,将立方体的中心点平移到原点,类似二分找中点。第二个左侧矩阵是缩放到 [ − 1 , 1 ] 3 [-1, 1]^3 [1,1]3内,因为边长是2,所以分子设置为2,相当于等比例交叉相乘。

Perspective projection

在这里插入图片描述

透视投影的思想:

Ⅰ. 将frustum给挤压成一个长方体,也就是将远平面压的和近平面一个大小。

Ⅱ. 做一次正交投影,将长方体的中心移到原点并将其压缩成 [ − 1 , 1 ] 3 [-1, 1]^3 [1,1]3的正方体。

注意:

Ⅰ. 在挤压的过程中,近平面永远不会发生变化。

Ⅱ. 在挤压过程中,远平面上的Z值不会发生变化。

Ⅲ. 挤压过程中,远平面的中心点也不会发生变化。

关于Z值会发生改变的情况,可以想象一个场景。在你的面前是一条笔直的上山铁轨,随着距离越远,枕木之间的压缩距离应该越近。

我们知道如何做正交投影,那么接下来来讨论挤压这个frustum的矩阵如何求?

在这里插入图片描述

在这里插入图片描述

首先上图鼠标所在的右侧虚线并不是特指远平面,而是近平面到远平面之间的任意面(包含远平面)。

那么此时图中出现一组相似三角形,根据边的比例关系和已知的近平面Z值以及待挤压点的信息,可以得到挤压后点的 x ′ , y ′ x',y' x,y

在齐次坐标中的表示形式:

[ x y z 1 ] → [ n x / z n y / z u n k n o w n 1 ] = = [ n x n y s t i l l u n k n o w n z ] \left[ \begin{matrix} x \\ y \\ z \\1\end{matrix} \right] →\left[ \begin{matrix} nx/z \\ ny/z \\ unknown \\1 \end{matrix} \right] ==\left[ \begin{matrix} nx \\ ny \\ still \ \ \ unknown \\ z \end{matrix} \right] xyz1 nx/zny/zunknown1 == nxnystill   unknownz

挤压矩阵:
M p e r s p → o r t h o [ x y z 1 ] = [ n x n y u n k n o w n z ] M_{persp→ortho} \left[ \begin{matrix} x \\ y \\ z \\ 1 \end{matrix} \right] =\left[ \begin{matrix} nx \\ ny \\ unknown \\ z \end{matrix} \right] Mpersportho xyz1 = nxnyunknownz

M p e r s p → o r t h o = [ n 0 0 0 0 n 0 0 ? ? ? ? 0 0 1 0 ] M_{persp→ortho}= \left[ \begin{matrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ ? & ? & ? & ? \\ 0 & 0 & 1 & 0 \end{matrix} \right] Mpersportho= n0?00n?000?100?0

从而我们求出了除第三行以外的内容,接下来我们求第三行,但我们需要记住两点:

  • 近平面上的任意一点都不会因变换而改变。

在这里插入图片描述

在这里插入图片描述

x、y依旧是变量,而替换之后的n为常量代表的是近平面的距离。总的来说就是用上述性质得到了一组unknown n 2 n^2 n2的特例。

  • 远平面上的任意一点的Z值都不会因变化而改变,并且中心点的X,Y也不会发生改变。

在这里插入图片描述

同样的,由于远平面任意一点的Z值不发生改变,取远平面的中心点(其被挤压后X和Y仍为0,且Z值不变),其坐标为(0,0,f,1)

最终推导出A,B的值,从而得到挤压矩阵 M p e r s p → o r t h o M_{persp→ortho} Mpersportho

在这里插入图片描述

M p e r s p → o r t h o = [ n 0 0 0 0 n 0 0 0 0 n + f − n f 0 0 1 0 ] M_{persp→ortho}= \left[ \begin{matrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+f & -nf \\ 0 & 0 & 1 & 0 \end{matrix} \right] Mpersportho= n0000n0000n+f100nf0
投影透视结论: M p e r s p = M o r t h o M p e r s p → o r t h o M_{persp}=M_{ortho}M_{persp→ortho} Mpersp=MorthoMpersportho

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/99198.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十个响应式页面项目

十个响应式页面项目 上接 53 个特效: 53 个 CSS 特效 153 个 CSS 特效 253 个 CSS 特效 3(完) 照例,预览地址在 http://www.goldenaarcher.com/html-css-js-proj/,git 地址: https://github.com/Goldena…

qt creater11 翻译国际化教程教程:

先出效果图。 闲聊几句:qt这个翻译很方便,能直接导出项目里所有文字。 具体步骤如下: 在Qt中,我们可以使用QTranslator类来实现多语言切换。以下是一般步骤: 1. 在你的源代码中,所有需要翻译的字符串都…

Python的io模块

io 模块提供了 Python 用于处理各种 I/O 类型的主要工具。三种主要的 I/O类型分别为: 文本 I/O, 二进制 I/O 和 原始 I/O。 io.open() 是内置的 open() 函数的别名. 语法: open(file,moder,buffering-1,encodingNone,errorsNone,newlineNone,closefdTrue,openerN…

算法训练 第一周

一、合并两个有序数组 本题给出了两个整数数组nums1和nums2,这两个数组均是非递减排列,要求我们将这两个数组合并成一个非递减排列的数组。题目中还要求我们把合并完的数组存储在nums1中,并且为了存储两个数组中全部的数据,nums1中…

Spark 环境安装与案例演示

Spark 环境安装 一、准备工作 1、hadoop成功安装 2、防火墙关闭 二、解压安装 1、上传 spark 安装包到/tools 目录,进入 tools 下,执行如下命令: tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz -C /training/由于 Spark 的脚本命令和 Hadoop…

linux信号量

通过学习linux的信号量,对linux的信号量进行了编程。

Docker常用命令以及详解

Docker常用命令以及详解 一、基础命令: docker version 功能:显示 docker 客户端和服务器的版本信息。docker info 功能:显示 docker 系统的详细信息docker --help 功能:显示 Docker 命令的帮助信息。示例输出:这个…

数据库-多表设计

概述: 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为三种: 一对…

MyBatis-Plus实现普通查询/分页查询[MyBatis-Plus系列] - 第484篇

历史文章(文章累计480) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 E…

kali 安装cpolar内网穿透实现 ssh 远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过cpolar 内网穿透软件实现ssh 远程连接kali! 1. 启动kali ssh 服务 默认新安装的kali系统会关闭ssh 连接服务,我们通…

【GPT引领前沿】GPT4技术与AI绘图

推荐阅读: 1、遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用 2、GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术 GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。例如在科研编程…

内网隧道代理技术(二十)之 CS使用HTTP代理上线不出网机器

CS使用HTTP代理上线不出网机器 CS工具自带上线不出网机器 如图A区域存在一台中转机器,这台机器可以出网,这种是最常见的情况。我们在渗透测试的过程中经常是拿下一台边缘机器,其有多块网卡,边缘机器可以访问内网机器,内网机器都不出网。这种情况下拿这个边缘机器做中转,…