P1 = [x1 y1 1] * T1; P2 = [x2 y2 1] * T1; 用xy坐标表示变换
时间: 2024-02-23 21:02:04 浏览: 31
如果想用xy坐标表示变换,则需要对矩阵变换T1进行拆解。我们可以将T1拆解为平移、旋转、缩放和剪切等基本变换的组合,具体如下:
```
T1 = T_translate * T_rotate * T_scale * T_shear
```
其中,T_translate表示平移变换,T_rotate表示旋转变换,T_scale表示缩放变换,T_shear表示剪切变换。每个变换的矩阵形式如下:
```
T_translate = [1 0 tx; 0 1 ty; 0 0 1]
T_rotate = [cosθ -sinθ 0; sinθ cosθ 0; 0 0 1]
T_scale = [sx 0 0; 0 sy 0; 0 0 1]
T_shear = [1 shx 0; shy 1 0; 0 0 1]
```
这样,我们就可以将P1和P2的变换用xy坐标表示出来。具体来说,对于P1变换后的坐标(x1', y1'),我们有:
```
x1' = x1*cosθ - y1*sinθ + tx*sx
y1' = x1*sinθ + y1*cosθ + ty*sy
```
对于P2变换后的坐标(x2', y2'),我们有:
```
x2' = x2*cosθ - y2*sinθ + tx*sx
y2' = x2*sinθ + y2*cosθ + ty*sy
```
其中,θ表示旋转角度,tx和ty表示平移量,sx和sy表示缩放比例,shx和shy表示剪切系数。
相关问题
P1 = [x1 y1 1] * T1; P2 = [x2 y2 1] * T1; 得到的点坐标怎么表示
假设矩阵变换T1为:
```
a b c
d e f
g h i
```
那么,点P1经过变换后的坐标为:
```
[x1' y1' 1] = [x1 y1 1] * T1
```
其中,`x1'`和`y1'`分别为P1变换后的x和y坐标,计算公式如下:
```
x1' = x1*a + y1*b + c
y1' = x1*d + y1*e + f
```
同理,点P2变换后的坐标为:
```
[x2' y2' 1] = [x2 y2 1] * T1
```
其中,`x2'`和`y2'`分别为P2变换后的x和y坐标,计算公式如下:
```
x2' = x2*a + y2*b + c
y2' = x2*d + y2*e + f
```
这样,我们就可以得到P1和P2变换后的坐标。
int k=2;int*p1,*p2;p1与p2均指向k那么k=*p1+*p2 p2=k p1=p2 k=*p1*(*p2)以上哪个不能正确赋值
以上表达式中,最后一个表达式 `k=*p1*(*p2)` 不能正确赋值。
原因是在这个表达式中,`*p2` 指向的是变量 `k` 的值,而 `*p1` 指向的是变量 `k` 的地址。因此,对 `k` 进行赋值时,使用 `*p1` 和 `*p2` 的值来计算,而不是直接将 `*p1` 和 `*p2` 赋值给 `k`。正确的表达式应该是 `k = *p1 + *p2; p2 = k; p1 = p2;`。