Winter 2021, Lingqi Yan, UC Santa Barbara
TransformationLecture 3:
http://www.cs.ucsb.edu/~lingqi/teaching/cs180.html
CS180 / 280: Introduction to Computer Graphics
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Announcements• TA-s’ office hours are all available on the course website
- When you join and see no one, don’t leave, just wait a while
• Assignment 1 will be released this Thursday (Jan 14)
- Weekly assignment, so it’s due in a week
• Policy update
- “Merit days”: you will have 3 days IN TOTAL to spend over the
quarter to make up for late assignments
2
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Last Lecture• Vectors
- Basic operations: addition, multiplication
• Dot Product
- Forward / backward (dot product positive / negative)
• Cross Product
- Left / right (cross product outward / inward)
• Matrices
3
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
This Week
• Transformation!
• Today
- Why study transformation - 2D transformations: rotation, scale, shear - Homogeneous coordinates - Composing transforms
4
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Today• Why study transformation
- Modeling
- Viewing
• 2D transformations
• Homogeneous coordinates
5
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Why Transformation?
Modeling: translation6
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Why Transformation?
Modeling: rotation7
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Why Transformation?
Modeling: scaling8
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Why Transformation?
9
Viewing: (3D to 2D) projection
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Today• Why study transformation
• 2D transformations
- Representing transformations using matrices
- Rotation, scale, shear
• Homogeneous coordinates
10
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara11Ren NgCS184/284A
Scale
S0.5
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara12Ren NgCS184/284A
Scale Transform
S0.5
x0 = sx
y0 = sy
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara13Ren NgCS184/284A
Scale Matrix
S0.5
x0
y0
�=
s 00 s
� xy
�
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara14Ren NgCS184/284A
Scale (Non-Uniform)
S0.5,1.0
x0
y0
�=
sx 00 sy
� xy
�
AAACW3icbVFdS8MwFE07dXNOnYpPvgSHzqfRiqAvwtAXHye4D1hHSbO7LZimJUllpexP+qQP/hUx24q4zQshh3PP/chJEHOmtON8WnZha3unWNot71X2Dw6rR8cdFSWSQptGPJK9gCjgTEBbM82hF0sgYcChG7w+zvPdN5CKReJFpzEMQjIWbMQo0Ybyq9ILYMxEFoRESzadTeueh9O6B2L4y92vaZQ/xZfYMULH3MpPV9TrDef9VgR+teY0nEXgTeDmoIbyaPnVd28Y0SQEoSknSvVdJ9aDjEjNKIdZ2UsUxIS+kjH0DRQkBDXIFt7M8IVhhngUSXOExgv2b0VGQqXSMDBKs99Erefm5H+5fqJHd4OMiTjRIOhy0CjhWEd4bjQeMglU89QAQiUzu2I6IZJQbb6jbExw15+8CTrXDdfg55ta8yG3o4TO0Dm6Qi66RU30hFqojSj6QN9W0SpZX3bBLtuVpdS28poTtBL26Q8Oh7dRAAACW3icbVFdS8MwFE07dXNOnYpPvgSHzqfRiqAvwtAXHye4D1hHSbO7LZimJUllpexP+qQP/hUx24q4zQshh3PP/chJEHOmtON8WnZha3unWNot71X2Dw6rR8cdFSWSQptGPJK9gCjgTEBbM82hF0sgYcChG7w+zvPdN5CKReJFpzEMQjIWbMQo0Ybyq9ILYMxEFoRESzadTeueh9O6B2L4y92vaZQ/xZfYMULH3MpPV9TrDef9VgR+teY0nEXgTeDmoIbyaPnVd28Y0SQEoSknSvVdJ9aDjEjNKIdZ2UsUxIS+kjH0DRQkBDXIFt7M8IVhhngUSXOExgv2b0VGQqXSMDBKs99Erefm5H+5fqJHd4OMiTjRIOhy0CjhWEd4bjQeMglU89QAQiUzu2I6IZJQbb6jbExw15+8CTrXDdfg55ta8yG3o4TO0Dm6Qi66RU30hFqojSj6QN9W0SpZX3bBLtuVpdS28poTtBL26Q8Oh7dRAAACW3icbVFdS8MwFE07dXNOnYpPvgSHzqfRiqAvwtAXHye4D1hHSbO7LZimJUllpexP+qQP/hUx24q4zQshh3PP/chJEHOmtON8WnZha3unWNot71X2Dw6rR8cdFSWSQptGPJK9gCjgTEBbM82hF0sgYcChG7w+zvPdN5CKReJFpzEMQjIWbMQo0Ybyq9ILYMxEFoRESzadTeueh9O6B2L4y92vaZQ/xZfYMULH3MpPV9TrDef9VgR+teY0nEXgTeDmoIbyaPnVd28Y0SQEoSknSvVdJ9aDjEjNKIdZ2UsUxIS+kjH0DRQkBDXIFt7M8IVhhngUSXOExgv2b0VGQqXSMDBKs99Erefm5H+5fqJHd4OMiTjRIOhy0CjhWEd4bjQeMglU89QAQiUzu2I6IZJQbb6jbExw15+8CTrXDdfg55ta8yG3o4TO0Dm6Qi66RU30hFqojSj6QN9W0SpZX3bBLtuVpdS28poTtBL26Q8Oh7dRAAACW3icbVFdS8MwFE07dXNOnYpPvgSHzqfRiqAvwtAXHye4D1hHSbO7LZimJUllpexP+qQP/hUx24q4zQshh3PP/chJEHOmtON8WnZha3unWNot71X2Dw6rR8cdFSWSQptGPJK9gCjgTEBbM82hF0sgYcChG7w+zvPdN5CKReJFpzEMQjIWbMQo0Ybyq9ILYMxEFoRESzadTeueh9O6B2L4y92vaZQ/xZfYMULH3MpPV9TrDef9VgR+teY0nEXgTeDmoIbyaPnVd28Y0SQEoSknSvVdJ9aDjEjNKIdZ2UsUxIS+kjH0DRQkBDXIFt7M8IVhhngUSXOExgv2b0VGQqXSMDBKs99Erefm5H+5fqJHd4OMiTjRIOhy0CjhWEd4bjQeMglU89QAQiUzu2I6IZJQbb6jbExw15+8CTrXDdfg55ta8yG3o4TO0Dm6Qi66RU30hFqojSj6QN9W0SpZX3bBLtuVpdS28poTtBL26Q8Oh7dR
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara15Ren NgCS184/284A
Reflection Matrix
x0 =??
y0 =??
Horizontal reflection: x0
y0
�=
�1 00 1
� xy
�
AAACWHicbVHLSgMxFM2MrX34qnXpJli0biwzIuhGKLpxWcE+oFNKJnOnDc1khiQjLUN/UnChv+LG9IHY6oWQw7nnPnLiJ5wp7Tgflr2Ty+8WiqXy3v7B4VHluNpRcSoptGnMY9nziQLOBLQ10xx6iQQS+Ry6/uRxke++glQsFi96lsAgIiPBQkaJNtSwEns+jJjI/Ihoyabzad3z8KzugQh+uPstzZWLL7BjdI653Q3pdrdFsw3BsFJzGs4y8F/grkENraM1rLx5QUzTCISmnCjVd51EDzIiNaMc5mUvVZAQOiEj6BsoSARqkC2NmeNzwwQ4jKU5QuMl+7siI5FSs8g3SrPfWG3nFuR/uX6qw7tBxkSSahB0NShMOdYxXriMAyaBaj4zgFDJzK6YjokkVJu/KBsT3O0n/wWd64Zr8PNNrfmwtqOITtEZukQuukVN9IRaqI0oekdfVs7KW582sgt2aSW1rXXNCdoIu/oN3QK1LQ==AAACWHicbVHLSgMxFM2MrX34qnXpJli0biwzIuhGKLpxWcE+oFNKJnOnDc1khiQjLUN/UnChv+LG9IHY6oWQw7nnPnLiJ5wp7Tgflr2Ty+8WiqXy3v7B4VHluNpRcSoptGnMY9nziQLOBLQ10xx6iQQS+Ry6/uRxke++glQsFi96lsAgIiPBQkaJNtSwEns+jJjI/Ihoyabzad3z8KzugQh+uPstzZWLL7BjdI653Q3pdrdFsw3BsFJzGs4y8F/grkENraM1rLx5QUzTCISmnCjVd51EDzIiNaMc5mUvVZAQOiEj6BsoSARqkC2NmeNzwwQ4jKU5QuMl+7siI5FSs8g3SrPfWG3nFuR/uX6qw7tBxkSSahB0NShMOdYxXriMAyaBaj4zgFDJzK6YjokkVJu/KBsT3O0n/wWd64Zr8PNNrfmwtqOITtEZukQuukVN9IRaqI0oekdfVs7KW582sgt2aSW1rXXNCdoIu/oN3QK1LQ==AAACWHicbVHLSgMxFM2MrX34qnXpJli0biwzIuhGKLpxWcE+oFNKJnOnDc1khiQjLUN/UnChv+LG9IHY6oWQw7nnPnLiJ5wp7Tgflr2Ty+8WiqXy3v7B4VHluNpRcSoptGnMY9nziQLOBLQ10xx6iQQS+Ry6/uRxke++glQsFi96lsAgIiPBQkaJNtSwEns+jJjI/Ihoyabzad3z8KzugQh+uPstzZWLL7BjdI653Q3pdrdFsw3BsFJzGs4y8F/grkENraM1rLx5QUzTCISmnCjVd51EDzIiNaMc5mUvVZAQOiEj6BsoSARqkC2NmeNzwwQ4jKU5QuMl+7siI5FSs8g3SrPfWG3nFuR/uX6qw7tBxkSSahB0NShMOdYxXriMAyaBaj4zgFDJzK6YjokkVJu/KBsT3O0n/wWd64Zr8PNNrfmwtqOITtEZukQuukVN9IRaqI0oekdfVs7KW582sgt2aSW1rXXNCdoIu/oN3QK1LQ==AAACWHicbVHLSgMxFM2MrX34qnXpJli0biwzIuhGKLpxWcE+oFNKJnOnDc1khiQjLUN/UnChv+LG9IHY6oWQw7nnPnLiJ5wp7Tgflr2Ty+8WiqXy3v7B4VHluNpRcSoptGnMY9nziQLOBLQ10xx6iQQS+Ry6/uRxke++glQsFi96lsAgIiPBQkaJNtSwEns+jJjI/Ihoyabzad3z8KzugQh+uPstzZWLL7BjdI653Q3pdrdFsw3BsFJzGs4y8F/grkENraM1rLx5QUzTCISmnCjVd51EDzIiNaMc5mUvVZAQOiEj6BsoSARqkC2NmeNzwwQ4jKU5QuMl+7siI5FSs8g3SrPfWG3nFuR/uX6qw7tBxkSSahB0NShMOdYxXriMAyaBaj4zgFDJzK6YjokkVJu/KBsT3O0n/wWd64Zr8PNNrfmwtqOITtEZukQuukVN9IRaqI0oekdfVs7KW582sgt2aSW1rXXNCdoIu/oN3QK1LQ==
x0 = �xAAAB7HicbZDNSgMxFIVv6l+tf1WXboJFdGOZEUE3QtGNywpOW2iHkkkzbWgmMyQZaRn6DG5cKOLWB3Ln25i2s9DWA4GPc+8l954gEVwbx/lGhZXVtfWN4mZpa3tnd6+8f9DQcaoo82gsYtUKiGaCS+YZbgRrJYqRKBCsGQzvpvXmE1Oax/LRjBPmR6QvecgpMdbyRqc356NuueJUnZnwMrg5VCBXvVv+6vRimkZMGiqI1m3XSYyfEWU4FWxS6qSaJYQOSZ+1LUoSMe1ns2Un+MQ6PRzGyj5p8Mz9PZGRSOtxFNjOiJiBXqxNzf9q7dSE137GZZIaJun8ozAV2MR4ejnuccWoEWMLhCpud8V0QBShxuZTsiG4iycvQ+Oi6lp+uKzUbvM4inAEx3AGLlxBDe6hDh5Q4PAMr/CGJHpB7+hj3lpA+cwh/BH6/AEOpI4tAAAB7HicbZDNSgMxFIVv6l+tf1WXboJFdGOZEUE3QtGNywpOW2iHkkkzbWgmMyQZaRn6DG5cKOLWB3Ln25i2s9DWA4GPc+8l954gEVwbx/lGhZXVtfWN4mZpa3tnd6+8f9DQcaoo82gsYtUKiGaCS+YZbgRrJYqRKBCsGQzvpvXmE1Oax/LRjBPmR6QvecgpMdbyRqc356NuueJUnZnwMrg5VCBXvVv+6vRimkZMGiqI1m3XSYyfEWU4FWxS6qSaJYQOSZ+1LUoSMe1ns2Un+MQ6PRzGyj5p8Mz9PZGRSOtxFNjOiJiBXqxNzf9q7dSE137GZZIaJun8ozAV2MR4ejnuccWoEWMLhCpud8V0QBShxuZTsiG4iycvQ+Oi6lp+uKzUbvM4inAEx3AGLlxBDe6hDh5Q4PAMr/CGJHpB7+hj3lpA+cwh/BH6/AEOpI4tAAAB7HicbZDNSgMxFIVv6l+tf1WXboJFdGOZEUE3QtGNywpOW2iHkkkzbWgmMyQZaRn6DG5cKOLWB3Ln25i2s9DWA4GPc+8l954gEVwbx/lGhZXVtfWN4mZpa3tnd6+8f9DQcaoo82gsYtUKiGaCS+YZbgRrJYqRKBCsGQzvpvXmE1Oax/LRjBPmR6QvecgpMdbyRqc356NuueJUnZnwMrg5VCBXvVv+6vRimkZMGiqI1m3XSYyfEWU4FWxS6qSaJYQOSZ+1LUoSMe1ns2Un+MQ6PRzGyj5p8Mz9PZGRSOtxFNjOiJiBXqxNzf9q7dSE137GZZIaJun8ozAV2MR4ejnuccWoEWMLhCpud8V0QBShxuZTsiG4iycvQ+Oi6lp+uKzUbvM4inAEx3AGLlxBDe6hDh5Q4PAMr/CGJHpB7+hj3lpA+cwh/BH6/AEOpI4tAAAB7HicbZDNSgMxFIVv6l+tf1WXboJFdGOZEUE3QtGNywpOW2iHkkkzbWgmMyQZaRn6DG5cKOLWB3Ln25i2s9DWA4GPc+8l954gEVwbx/lGhZXVtfWN4mZpa3tnd6+8f9DQcaoo82gsYtUKiGaCS+YZbgRrJYqRKBCsGQzvpvXmE1Oax/LRjBPmR6QvecgpMdbyRqc356NuueJUnZnwMrg5VCBXvVv+6vRimkZMGiqI1m3XSYyfEWU4FWxS6qSaJYQOSZ+1LUoSMe1ns2Un+MQ6PRzGyj5p8Mz9PZGRSOtxFNjOiJiBXqxNzf9q7dSE137GZZIaJun8ozAV2MR4ejnuccWoEWMLhCpud8V0QBShxuZTsiG4iycvQ+Oi6lp+uKzUbvM4inAEx3AGLlxBDe6hDh5Q4PAMr/CGJHpB7+hj3lpA+cwh/BH6/AEOpI4t
y0 = yAAAB63icbZDLSgMxFIbP1Futt6pLN8EiuiozUtCNUHTjsoK9QDuUTJppQ5PMkGSEYegruHGhiFtfyJ1vY6adhbb+EPj4zznknD+IOdPGdb+d0tr6xuZWebuys7u3f1A9POroKFGEtknEI9ULsKacSdo2zHDaixXFIuC0G0zv8nr3iSrNIvlo0pj6Ao8lCxnBJrfS85t0WK25dXcutApeATUo1BpWvwajiCSCSkM41rrvubHxM6wMI5zOKoNE0xiTKR7TvkWJBdV+Nt91hs6sM0JhpOyTBs3d3xMZFlqnIrCdApuJXq7l5n+1fmLCaz9jMk4MlWTxUZhwZCKUH45GTFFieGoBE8XsrohMsMLE2HgqNgRv+eRV6FzWPcsPjVrztoijDCdwChfgwRU04R5a0AYCE3iGV3hzhPPivDsfi9aSU8wcwx85nz+neY34AAAB63icbZDLSgMxFIbP1Futt6pLN8EiuiozUtCNUHTjsoK9QDuUTJppQ5PMkGSEYegruHGhiFtfyJ1vY6adhbb+EPj4zznknD+IOdPGdb+d0tr6xuZWebuys7u3f1A9POroKFGEtknEI9ULsKacSdo2zHDaixXFIuC0G0zv8nr3iSrNIvlo0pj6Ao8lCxnBJrfS85t0WK25dXcutApeATUo1BpWvwajiCSCSkM41rrvubHxM6wMI5zOKoNE0xiTKR7TvkWJBdV+Nt91hs6sM0JhpOyTBs3d3xMZFlqnIrCdApuJXq7l5n+1fmLCaz9jMk4MlWTxUZhwZCKUH45GTFFieGoBE8XsrohMsMLE2HgqNgRv+eRV6FzWPcsPjVrztoijDCdwChfgwRU04R5a0AYCE3iGV3hzhPPivDsfi9aSU8wcwx85nz+neY34AAAB63icbZDLSgMxFIbP1Futt6pLN8EiuiozUtCNUHTjsoK9QDuUTJppQ5PMkGSEYegruHGhiFtfyJ1vY6adhbb+EPj4zznknD+IOdPGdb+d0tr6xuZWebuys7u3f1A9POroKFGEtknEI9ULsKacSdo2zHDaixXFIuC0G0zv8nr3iSrNIvlo0pj6Ao8lCxnBJrfS85t0WK25dXcutApeATUo1BpWvwajiCSCSkM41rrvubHxM6wMI5zOKoNE0xiTKR7TvkWJBdV+Nt91hs6sM0JhpOyTBs3d3xMZFlqnIrCdApuJXq7l5n+1fmLCaz9jMk4MlWTxUZhwZCKUH45GTFFieGoBE8XsrohMsMLE2HgqNgRv+eRV6FzWPcsPjVrztoijDCdwChfgwRU04R5a0AYCE3iGV3hzhPPivDsfi9aSU8wcwx85nz+neY34AAAB63icbZDLSgMxFIbP1Futt6pLN8EiuiozUtCNUHTjsoK9QDuUTJppQ5PMkGSEYegruHGhiFtfyJ1vY6adhbb+EPj4zznknD+IOdPGdb+d0tr6xuZWebuys7u3f1A9POroKFGEtknEI9ULsKacSdo2zHDaixXFIuC0G0zv8nr3iSrNIvlo0pj6Ao8lCxnBJrfS85t0WK25dXcutApeATUo1BpWvwajiCSCSkM41rrvubHxM6wMI5zOKoNE0xiTKR7TvkWJBdV+Nt91hs6sM0JhpOyTBs3d3xMZFlqnIrCdApuJXq7l5n+1fmLCaz9jMk4MlWTxUZhwZCKUH45GTFFieGoBE8XsrohMsMLE2HgqNgRv+eRV6FzWPcsPjVrztoijDCdwChfgwRU04R5a0AYCE3iGV3hzhPPivDsfi9aSU8wcwx85nz+neY34
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara16Ren NgCS184/284A
Shear Matrix
x0 =??
y0 =??
x0
y0
�=
1 a0 1
� xy
�
AAACV3icbVHLTgIxFO0MiIgv0KWbRqK4IjPGRDcmRDcuMZFHwkxIp1ygodOZtB3DZMJPGjf8ihstjxgBb9L05NxzHz0NYs6Udpy5Zefye4X94kHp8Oj45LRcOWurKJEUWjTikewGRAFnAlqaaQ7dWAIJAw6dYPK8yHfeQSoWiTedxuCHZCTYkFGiDdUvCy+AERNZEBIt2XQ2rXkeTmseiMEv97ilcfE1JkbmmNvdUG43W/TaEPTLVafuLAPvAncNqmgdzX75wxtENAlBaMqJUj3XibWfEakZ5TAreYmCmNAJGUHPQEFCUH629GWGrwwzwMNImiM0XrJ/KzISKpWGgVGa/cZqO7cg/8v1Ej188DMm4kSDoKtBw4RjHeGFyXjAJFDNUwMIlczsiumYSEK1+YqSMcHdfvIuaN/WXYNf76qNp7UdRXSBLtENctE9aqAX1EQtRNEn+rJyVt6aW992wS6upLa1rjlHG2FXfgDNkLYmAAACV3icbVHLTgIxFO0MiIgv0KWbRqK4IjPGRDcmRDcuMZFHwkxIp1ygodOZtB3DZMJPGjf8ihstjxgBb9L05NxzHz0NYs6Udpy5Zefye4X94kHp8Oj45LRcOWurKJEUWjTikewGRAFnAlqaaQ7dWAIJAw6dYPK8yHfeQSoWiTedxuCHZCTYkFGiDdUvCy+AERNZEBIt2XQ2rXkeTmseiMEv97ilcfE1JkbmmNvdUG43W/TaEPTLVafuLAPvAncNqmgdzX75wxtENAlBaMqJUj3XibWfEakZ5TAreYmCmNAJGUHPQEFCUH629GWGrwwzwMNImiM0XrJ/KzISKpWGgVGa/cZqO7cg/8v1Ej188DMm4kSDoKtBw4RjHeGFyXjAJFDNUwMIlczsiumYSEK1+YqSMcHdfvIuaN/WXYNf76qNp7UdRXSBLtENctE9aqAX1EQtRNEn+rJyVt6aW992wS6upLa1rjlHG2FXfgDNkLYmAAACV3icbVHLTgIxFO0MiIgv0KWbRqK4IjPGRDcmRDcuMZFHwkxIp1ygodOZtB3DZMJPGjf8ihstjxgBb9L05NxzHz0NYs6Udpy5Zefye4X94kHp8Oj45LRcOWurKJEUWjTikewGRAFnAlqaaQ7dWAIJAw6dYPK8yHfeQSoWiTedxuCHZCTYkFGiDdUvCy+AERNZEBIt2XQ2rXkeTmseiMEv97ilcfE1JkbmmNvdUG43W/TaEPTLVafuLAPvAncNqmgdzX75wxtENAlBaMqJUj3XibWfEakZ5TAreYmCmNAJGUHPQEFCUH629GWGrwwzwMNImiM0XrJ/KzISKpWGgVGa/cZqO7cg/8v1Ej188DMm4kSDoKtBw4RjHeGFyXjAJFDNUwMIlczsiumYSEK1+YqSMcHdfvIuaN/WXYNf76qNp7UdRXSBLtENctE9aqAX1EQtRNEn+rJyVt6aW992wS6upLa1rjlHG2FXfgDNkLYmAAACV3icbVHLTgIxFO0MiIgv0KWbRqK4IjPGRDcmRDcuMZFHwkxIp1ygodOZtB3DZMJPGjf8ihstjxgBb9L05NxzHz0NYs6Udpy5Zefye4X94kHp8Oj45LRcOWurKJEUWjTikewGRAFnAlqaaQ7dWAIJAw6dYPK8yHfeQSoWiTedxuCHZCTYkFGiDdUvCy+AERNZEBIt2XQ2rXkeTmseiMEv97ilcfE1JkbmmNvdUG43W/TaEPTLVafuLAPvAncNqmgdzX75wxtENAlBaMqJUj3XibWfEakZ5TAreYmCmNAJGUHPQEFCUH629GWGrwwzwMNImiM0XrJ/KzISKpWGgVGa/cZqO7cg/8v1Ej188DMm4kSDoKtBw4RjHeGFyXjAJFDNUwMIlczsiumYSEK1+YqSMcHdfvIuaN/WXYNf76qNp7UdRXSBLtENctE9aqAX1EQtRNEn+rJyVt6aW992wS6upLa1rjlHG2FXfgDNkLYm
Horizontal shift is 0 at y=0Horizontal shift is a at y=1
Hints:
a
1
Vertical shift is always 0
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara17Ren NgCS184/284A
Rotate
R45
(about the origin (0, 0), CCW by default)
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara18Ren NgCS184/284A
Rotation Matrix
Lecture 3 Math
x0 � x1 � x2 � x3 � y
x+ y � ✓
f(x)
f(x+ y) = f(x) + f(y)
f(ax) = af(x)
f(x) = af(x)
Scale:Sa(x) = ax
S2(x)� S2(x1)� S2(x2)� S2(x3 � S2(ax)� aS2(x)� S2(x)� S2(y)� S2(x+ y)
S2(x) = 2x
aS2(x) = 2ax
S2(ax) = 2ax
S2(ax) = aS2(x)
S2(x+ y) = 2(x+ y)
S2(x) + S2(y) = 2x+ 2y
S2(x+ y) = S2(x) + S2(y)
Rotations:
R✓(x)�R✓(x0)�R✓(x1)�R✓(x2)�R✓(x3)�R✓(ax)� aR✓(x)�R✓(y)�R✓(x+ y)
Translation:Ta,b(x0)� Ta,b(x1)� Ta,b(x2)� Ta,b(x3)
Lecture 3 Math
x0 � x1 � x2 � x3 � y
x+ y � ✓ � xx � xycos ✓ � sin ✓
f(x)
f(x+ y) = f(x) + f(y)
f(ax) = af(x)
f(x) = af(x)
Scale:Sa(x) = ax
S2(x)� S2(x1)� S2(x2)� S2(x3 � S2(ax)� aS2(x)� S2(x)� S2(y)� S2(x+ y)
S2(x) = 2x
aS2(x) = 2ax
S2(ax) = 2ax
S2(ax) = aS2(x)
S2(x+ y) = 2(x+ y)
S2(x) + S2(y) = 2x+ 2y
S2(x+ y) = S2(x) + S2(y)
Ss =
sx 00 sy
�
Ss =
0.5 00 2
�
s =⇥0.5 2
⇤T
Ssx0 � Ssx1 � Ssx2 � Ssx3
Lecture 3 Math
x0 � x1 � x2 � x3 � y
x+ y � ✓ � xx � xycos ✓ � sin ✓
f(x)
f(x+ y) = f(x) + f(y)
f(ax) = af(x)
f(x) = af(x)
Scale:Sa(x) = ax
S2(x)� S2(x1)� S2(x2)� S2(x3 � S2(ax)� aS2(x)� S2(x)� S2(y)� S2(x+ y)
S2(x) = 2x
aS2(x) = 2ax
S2(ax) = 2ax
S2(ax) = aS2(x)
S2(x+ y) = 2(x+ y)
S2(x) + S2(y) = 2x+ 2y
S2(x+ y) = S2(x) + S2(y)
Ss =
sx 00 sy
�
Ss =
0.5 00 2
�
s =⇥0.5 2
⇤T
Ssx0 � Ssx1 � Ssx2 � Ssx3
Lecture 3 Math
x0 � x1 � x2 � x3 � y
x+ y � ✓ � xx � xycos ✓ � sin ✓
f(x)
f(x+ y) = f(x) + f(y)
f(ax) = af(x)
f(x) = af(x)
Scale:Sa(x) = ax
S2(x)� S2(x1)� S2(x2)� S2(x3 � S2(ax)� aS2(x)� S2(x)� S2(y)� S2(x+ y)
S2(x) = 2x
aS2(x) = 2ax
S2(ax) = 2ax
S2(ax) = aS2(x)
S2(x+ y) = 2(x+ y)
S2(x) + S2(y) = 2x+ 2y
S2(x+ y) = S2(x) + S2(y)
Ss =
sx 00 sy
�
Ss =
0.5 00 2
�
s =⇥0.5 2
⇤T
Ssx0 � Ssx1 � Ssx2 � Ssx3
Lecture 3 Math
x0 � x1 � x2 � x3 � y
x+ y � ✓ � xx � xycos ✓ � sin ✓
f(x)
f(x+ y) = f(x) + f(y)
f(ax) = af(x)
f(x) = af(x)
Scale:Sa(x) = ax
S2(x)� S2(x1)� S2(x2)� S2(x3 � S2(ax)� aS2(x)� S2(x)� S2(y)� S2(x+ y)
S2(x) = 2x
aS2(x) = 2ax
S2(ax) = 2ax
S2(ax) = aS2(x)
S2(x+ y) = 2(x+ y)
S2(x) + S2(y) = 2x+ 2y
S2(x+ y) = S2(x) + S2(y)
Ss =
sx 00 sy
�
Ss =
0.5 00 2
�
s =⇥0.5 2
⇤T
Ssx0 � Ssx1 � Ssx2 � Ssx3
Rotations:
R✓(x)�R✓(x0)�R✓(x1)�R✓(x2)�R✓(x3)�R✓(ax)� aR✓(x)�R✓(y)�R✓(x+ y)
R✓ =
cos ✓ � sin ✓sin ✓ cos ✓
�
Translation:Tb(x) = x+ b
Tb(x0)� Tb(x1)� Tb(x2)� Tb(x3)� Tb(x)� Tb(y)� Tb(x+ y)� Tb(x) + Tb(y)
Ta,b(x0)� Ta,b(x1)� Ta,b(x2)� Ta,b(x3)� Ta,b(x)� Ta,b(y)� Ta,b(x+ y)� Ta,b(x) + Ta,b(y)
Reflection:Rey(x0)�Rey(x1)�Rey(x2)�Rey(x3)
Rex(x0)�Rex(x1)�Rex(x2)�Rex(x3)
Shear:Hx(x0)�Hx(x1)�Hx(x2)�Hx(x3)
Misc:f(x0)� f(x1)� f(x2)� f(x3)
f(x) = T3,1(S0.5(x))��f(x) = S0.5(T3,1(x))
f(x) = g(x) + b
Euclidean:|f(x)� f(y)| = |x� y|
2
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Deriving the Rotation Matrix
19
* Assuming we already know that a 2x2 matrix is able to perform rotations
• (1,0) → (cos θ, sin θ)AAACdXicbVFNT9wwEHVCS2kosNALEkIyLCBOS1KByqUSXweOILGAtF6tHGd218KxI3uCuor4B/y63vo3eum13g8JCB3J8vOb9zzjcVoo6TCOfwfh3IeP858WPkeLX5aWVxqra7fOlFZAWxhl7H3KHSipoY0SFdwXFnieKrhLH87H+btHsE4afYOjAro5H2jZl4Kjp3qNZ5bCQOqqyDla+fMpYsI4hkNAzljEnNTTQ8RAZy+qH3XbKd2jZ95x7veLt1omMoNR3ZB4cVy7tddoxq14EvQ9SGagSWZx1Wv8YpkRZQ4aheLOdZK4wG7FLUqhwJcuHRRcPPABdDzUPAfXrSZTe6K7nslo31i/NNIJ+9pR8dy5UZ56pW9w6Oq5Mfm/XKfE/nG3krooEbSYFuqXiqKh4y+gmbQgUI084MJK3ysVQ265QP9R4yEk9Se/B7ffWslRK74+bJ6czcaxQDbINtknCflOTsgluSJtIsifYD3YCraDv+FmuBPuTaVhMPN8JW8iPPgHtmi+PQ==✓cos ✓sin ✓
◆=
✓A BC D
◆·✓10
◆
• , A = cos θ C = sin θ
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara20Ren NgCS184/284A
Linear Transforms = Matrices
x0 = a x+ b y
y0 = c x+ d y
x0
y0
�=
a bc d
� xy
�
x0 = M x
(of the same dimension)
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Today
• Why study transformation
• 2D transformations
• Homogeneous coordinates
- Why homogeneous coordinates - Affine transformation
21
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara22Ren NgCS184/284A
Translate
T1,1Ttx,ty
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara23Ren NgCS184/284A
Translation??
T1,1
x0 = x+ tx
y0 = y + ty
Ttx,ty
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Why Homogeneous Coordinates
• Translation cannot be represented in matrix form
24
x0
y0
�=
a bc d
� xy
�+
txty
�
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
(So, translation is NOT linear transform!)
• But we don’t want translation to be a special case
• Is there a unified way to represent all transformations? (and what’s the cost?)
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara25Ren NgCS184/284A
Solution: Homogenous Coordinates
Add a third coordinate (w-coordinate)
• 2D point = (x, y, 1)T • 2D vector = (x, y, 0)T
Matrix representation of translations�
⇤x�
y�
w�
⇥
⌅ =
�
⇤1 0 tx0 1 ty0 0 1
⇥
⌅ ·
�
⇤xy1
⇥
⌅ =
�
⇤x + txy + ty
1
⇥
⌅
What if you translate a vector?
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
Translating Points and Vectors• Translating a point (x, y,1)
26
• Translating a vector
- Recall: translational invariance of vectors
(x, y,0)
AAACnnicbVFRa9swEJa9dkvddsvWx7yIhpZCIdhjY30pdBuM0VLawtIG4hBk+ZKKyrKRziPG5Gftj/Rt/2ayY1jr9ODgu+/06T6dokwKg77/13FfbWy+ftPZ8rZ3dt++677/cGvSXHMY8lSmehQxA1IoGKJACaNMA0siCXfRw/eqf/cbtBGp+oVFBpOEzZWYCc7QUtPunzCCuVBlljDUYrH0AnpIfZs4XYShV6GgroqmqhkvBBX/14Q8TtFr31TpK1WIsMDaaakhXpbBsiU/XZcer8YXx6vB7YHTbt8f+HXQdRA0oE+auJ52H8M45XkCCrlkxowDP8NJyTQKLsEayg1kjD+wOYwtVCwBMylr00t6YJmYzlJtUyGt2aeKkiXGFElkT1qD96bdq8iXeuMcZyeTUqgsR1B8NWiWS4oprf6KxkIDR1lYwLgW1ivl90wzjvZHqyUE7Sevg9uPg+DzwL/51D/71qyjQ3pknxyRgHwhZ+QnuSZDwp2e89U5dy5c6v5wL92r1VHXaTR75Fm4o3+azci70
@1 0 tx0 1 ty0 0 1
1
A ·
0
@xy1
1
A =
0
@x+ txy + ty
1
1
A
AAAClnicdVFNT9wwEHVSaCHlY1sulbhYrIo4rRwEKhxaIVAFx0ViAWmzWjnO7GLhOJE9qXYV7U/qn+mNf4MTIgGBjjTSmzfz7OdxnCtpkbEHz/+wtPzx08pq8HltfWOz8+Xrtc0KI2AgMpWZ25hbUFLDACUquM0N8DRWcBPfn1X9mz9grMz0Fc5zGKV8quVECo6OGnf+RjFMpS7zlKORs0UQ0l3KXOJ4FkVBhcK6mjdVzQQR6ORZE4kkw6B9UqWvVBHCDGunpYFkUbJFS/7zv1LWmhx3uqzH6qBvQdiALmmiP+78i5JMFCloFIpbOwxZjqOSG5RCgTNSWMi5uOdTGDqoeQp2VNZmF/S7YxI6yYxLjbRmXypKnlo7T2M36Qze2XavIt/rDQucHI1KqfMCQYuniyaFopjR6o9oIg0IVHMHuDDSeaXijhsu0P1ktYSw/eS34Hq/Fx722OVB9+S0WccK2SY7ZI+E5Ac5IRekTwZEeFvesXfqnfnf/F/+b//8adT3Gs0WeRV+/xEPfMV80
@1 0 tx0 1 ty0 0 1
1
A ·
0
@xy0
1
A =
0
@xy0
1
A
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara27Ren NgCS184/284A
Homogenous Coordinates
Valid operation if w-coordinate of result is 1 or 0
• vector + vector = vector • point – point = vector • point + vector = point • point + point = ??
In homogeneous coordinates, 0
@xyw
1
A is the 2D point
0
@x/wy/w1
1
A , w 6= 0
AAACdXicbVFNT9tAEF0baKlb2pReKlVIA4GqBxRsFAmOqO2hRyoRQMpG0XozSVas1+7uGIis/AN+XW/9G7302nViVeVjpF09vTffkxZaOYrjX0G4srr27Pn6i+jlq43Xb1pvN89dXlqJPZnr3F6mwqFWBnukSONlYVFkqcaL9OpLrV9co3UqN2c0K3CQiYlRYyUFeWrYuuMpTpSpikyQVbdziABugXOY1d9NxNGM/okRB+7h1GaVchxoihwOv3IocmVo7sWnch3AzTJfA5L7Ofd5TRv8AXE0bLXjTrwweAySBrRZY6fD1k8+ymWZoSGphXP9JC5oUAlLSmr0/ZYOCyGvxAT7HhqRoRtUi63NYc8zIxjn1j9DsGD/j6hE5twsS71nPbR7qNXkU1q/pPHxoFKmKAmNXBYalxooh/oEMFIWJemZB0Ja5XsFORVWSPKHqpeQPBz5MTg/7CTdTvd7t33yuVnHOvvAdtgnlrAjdsK+sVPWY5L9Dt4H28FO8CfcCnfDj0vXMGhi3rF7Fh78BQRTunQ=
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara28Ren NgCS184/284A
Affine Transformations
Affine map = linear map + translation
Using homogenous coordinates:�
⇤x�
y�
1
⇥
⌅ =
�
⇤a b txc d ty0 0 1
⇥
⌅ ·
�
⇤xy1
⇥
⌅
�x�
y�
⇥=
�a bc d
⇥·�
xy
⇥+
�txty
⇥
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara29Ren NgCS184/284A
2D Transformations
Scale
Rotation
Translation
T(tx, ty) =
�
⇤1 0 tx0 1 ty0 0 1
⇥
⌅
S(sx, sy) =
�
⇤sx 0 00 sy 00 0 1
⇥
⌅
R(�) =
�
⇤cos � � sin � 0sin� cos � 0
0 0 1
⇥
⌅
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara30Ren NgCS184/284A
Inverse Transform
is the inverse of transform in both a matrix and geometric sense
M�1
M�1
M
M�1 M�1
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara31
Composing Transforms
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara32Ren NgCS184/284A
Composite Transform
?
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara33Ren NgCS184/284A
Translate Then Rotate?
M = R45 · T(1,0) M = R45 · T(1,0)
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara34Ren NgCS184/284A
Rotate Then Translate
M = T(1,0) ·R45 M = T(1,0) ·R45
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara35Ren NgCS184/284A
Transform Ordering Matters!
M = R45 · T(1,0) M = R45 · T(1,0)
M = T(1,0) ·R45 M = T(1,0) ·R45
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara36 Ren NgCS184/284A
Transform Ordering Matters!
Matrix multiplication is not commutative
M = R45 · T(1,0)M = T(1,0) ·R45≠
2
4cos 45� � sin 45� 0sin 45� cos 45� 0
0 0 1
3
5
2
41 0 10 1 00 0 1
3
5 6=
2
41 0 10 1 00 0 1
3
5
2
4cos 45� � sin 45� 0sin 45� cos 45� 0
0 0 1
3
5
Recall the matrix math represented by these symbols:
Note that matrices are applied right to left:
T(1,0) ·R45
2
4xy1
3
5 =
2
41 0 10 1 00 0 1
3
5
2
4cos 45� � sin 45� 0sin 45� cos 45� 0
0 0 1
3
5
2
4xy1
3
5
Ren NgCS184/284A
Transform Ordering Matters!
Matrix multiplication is not commutative
M = R45 · T(1,0)M = T(1,0) ·R45≠
2
4cos 45� � sin 45� 0sin 45� cos 45� 0
0 0 1
3
5
2
41 0 10 1 00 0 1
3
5 6=
2
41 0 10 1 00 0 1
3
5
2
4cos 45� � sin 45� 0sin 45� cos 45� 0
0 0 1
3
5
Recall the matrix math represented by these symbols:
Note that matrices are applied right to left:
T(1,0) ·R45
2
4xy1
3
5 =
2
41 0 10 1 00 0 1
3
5
2
4cos 45� � sin 45� 0sin 45� cos 45� 0
0 0 1
3
5
2
4xy1
3
5
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara
An Implicit Order using Homogeneous Coordinates
• Linear transform first, then translate
37
Ren NgCS184/284A
Affine Transformations
Affine map = linear map + translation
Using homogenous coordinates:�
⇤x�
y�
1
⇥
⌅ =
�
⇤a b txc d ty0 0 1
⇥
⌅ ·
�
⇤xy1
⇥
⌅
�x�
y�
⇥=
�a bc d
⇥·�
xy
⇥+
�txty
⇥Ren NgCS184/284A
Affine Transformations
Affine map = linear map + translation
Using homogenous coordinates:�
⇤x�
y�
1
⇥
⌅ =
�
⇤a b txc d ty0 0 1
⇥
⌅ ·
�
⇤xy1
⇥
⌅
�x�
y�
⇥=
�a bc d
⇥·�
xy
⇥+
�txty
⇥
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara38Ren NgCS184/284A
Composing Transforms
Sequence of affine transforms A1, A2, A3, ...
• Compose by matrix multiplication • Very important for performance!
An(. . . A2(A1(x))) = An · · · A2 · A1 ·
�
⇤xy1
⇥
⌅
Pre-multiply n matrices to obtain a single matrix representing combined transform
CS180 / 280, Winter 2021 Lingqi Yan, UC Santa Barbara39Ren NgCS184/284A
Decomposing Complex Transforms
How to rotate around a given point c? 1. Translate center to origin 2. Rotate 3. Translate back
Matrix representation?
T(�c) T(c)R(�)
T(c) · R(�) · T(�c)
Thank you!(And thank Prof. Ravi Ramamoorthi and Prof. Ren Ng for many of the slides!)