winter 2021, lingqi yan, uc santa barbaralingqi/teaching/resources/cs...cs180 / 280, winter 2021...

40
Winter 2021, Lingqi Yan, UC Santa Barbara Transformation Lecture 3: http://www.cs.ucsb.edu/~lingqi/teaching/cs180.html CS180 / 280: Introduction to Computer Graphics

Upload: others

Post on 10-Feb-2021

10 views

Category:

Documents


0 download

TRANSCRIPT

  • 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!)