3D 常用公式

30 篇文章 0 订阅
27 篇文章 0 订阅

3D Program 

常用公式

 

两个向量

A

B

的标量积

 

(

参见第五章

): 

 

A

B

A

B

A

B

A

B

x

x

y

y

z

z

 

 

两个向量

A

B

的矢量积

(

参见第五章

): 

 

A

B

i

A

A

B

B

j

A

A

B

B

k

A

A

B

B

i

j

k

A

A

A

B

B

B

y

z

y

z

x

z

x

z

x

y

x

y

x

y

z

x

y

z

det

det

det

det

 

 

平移变换,

t

t

x

y

,

t

z

描述平移

(

参见第二章

): 

 

x

y

z

t

t

t

x

y

z

x

y

z

1

1

0

0

0

0

1

0

0

0

0

1

0

1

1

 

 

缩放变换,

s

s

x

y

,

s

z

描述缩放

(

参见第二章

): 

 

x

y

z

s

s

s

x

y

z

x

y

z

0

0

0

0

0

0

 

 

3D

旋转变换,角度

,

描述旋转

 

(

参见第二章

): 

左手

:

 

 

-z->+x

y

 

 

 

 

+y->-z

x

 

 

 

 

+x->+y

z

 

x

y

z

x

y

z

cos(

)

sin(

)

sin(

)

cos(

)

cos(

)

sin(

)

sin(

)

cos(

)

cos(

)

sin(

)

sin(

)

cos(

)

0

0

1

0

0

1

0

0

0

0

0

0

0

0

1

 

 

 

透视变换,

focus

 

指定了透视缩短(

perspective foreshortening

(

参见第二章

): 

 

x

y

z

focus

x

y

z

1

1

0

0

0

0

1

0

0

0

0

0

1

0

0

1

0

1

/

 

 

既然在结果向量的最后一个元素不是

1

,通过乘上

1/(

z

/focus)

来归一化:

 

 

透视变换还有几个其它的问题。

比如说,

z=0

的点将被投影变换映射到哪里?要知道,

从上面的

公式中能看出,

z=0

的时候会导致计算错误。

 

 

 

另一个问题,

z

为负值的时候的计算会产生负坐标。我们看到的将会是对象(或对象的一部分)

被翻转过头了。但是,带有负

z

坐标的的对象在观察面的后面,躲在了观察者的身后。这样,我们实

际上看不到它了(至少是它的一部分)

 

 

 

解决这个问题的唯一的办法是保证没有无效的

Z

坐标

 

一条实现途径是对原始的点集进行

3D

剪(在后面章节中讨论

2D

3D

裁剪的细节)

 

 

 

逆纹理映射方程,

V

U

,

是纹理空间基(

basis

)在视空间的映射,

O

是纹理空间原

点在视空间的映射(参见第三章)

 

u

i

V

O

V

O

focus

j

V

O

V

O

focus

V

O

V

O

i

V

U

V

U

focus

j

V

U

V

U

focus

V

U

V

U

z

y

y

z

x

z

z

x

y

x

x

y

y

z

z

y

z

x

x

z

x

y

y

x

(

)

/

(

)

/

(

)

(

)

/

(

)

/

(

)

 

 

v

i

U

O

U

O

focus

j

U

O

U

O

focus

U

O

U

O

i

V

U

V

U

focus

j

V

U

V

U

focus

V

U

V

U

y

z

z

y

z

x

x

z

x

y

y

x

y

z

z

y

z

x

x

z

x

y

y

x

(

)

/

(

)

/

(

)

(

)

/

(

)

/

(

)

 

 

11 

线方程,

C

同向向量

co-directed vector

Q

是在直线上的点

(参见第五章)

 

X

Q

tC

 

 

11 

面方程,

N

是法向量,

P

是平面上的点

(

参见第五章

): 

 

(

)

X

P

N

0

 

 

12 

方程,

M

是球心,

r

是其半径

(

参见第五章

): 

 

(

)

X

M

r

 

 

11 

找直线和平面的交点

(

参见第五章

): 

 

X

Q

tC

X

P

N

Q

tC

P

N

(

)

(

)

0

0

 

 

tC

N

P

Q

N

t

P

Q

N

C

N

(

)

(

)

 

 

12 

找直线和球的交点

(

参见第五章

): 

 

X

Q

tC

X

M

X

M

r

Q

tC

M

Q

tC

M

r

(

)

(

)

(

)

(

)

2

2

 

 

(

)(

)

(

)

Q

M

Q

M

tC

Q

M

t

C

C

r

2

0

2

2

 

 

16 

H

ermite

平面曲线方程,

 

P

P

1

2

,

是端点,

V

V

1

2

,

是曲线在端点上的切线

(

参见第六章

): 

 

x

t

y

t

t

t

t

P

P

V

V

(

)

(

)

3

2

1

2

1

2

1

2

2

1

1

3

3

2

1

0

0

1

0

1

0

0

0

 

 

15 

B

é

zier

平面曲线方程,

P

P

P

P

1

2

3

4

,

,

,

是其控制点

(

参见第六章

): 

 

x

t

y

t

t

t

t

P

P

P

P

(

)

(

)

3

2

1

2

3

4

1

1

3

3

1

3

6

3

0

3

3

0

0

1

0

0

0

 

 

16 

3

D

双三次面片的一般形式,

G

包含控制点

(

参见第六章

): 

 





x

t

s

y

t

s

z

t

s

t

t

t

M

G

M

s

s

s

T

(

,

)

(

,

)

(

,

)

3

2

3

2

1

1

 

 

16 

境照明模型

(

参见第八章

): 

 

I

K

I

reflected

object

ambient

 

 

17 

反射照明模型

(

参见第八章

): 

 

I

K

I

K

I

reflected

ambient

ambient

diffuse

i

directed

i

,

cos

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值