Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 7 of 7

Thread: Texture mapping onto a disk

  1. #1
    Junior Member Regular Contributor
    Join Date
    Jun 2010
    Posts
    162

    Texture mapping onto a disk

    I am trying to map a texture on a disk. Each coordinate on the disk is defined by (rscos(theta), rsin(theta), 0). I know texture value ranges from (0,0) to (1,1). How to map texture coordinates to vertices, i.e. how to calculate the (u,v) texture coordinates for the disk. Thanks.

  2. #2
    Senior Member OpenGL Pro
    Join Date
    Jan 2012
    Location
    Australia
    Posts
    1,108
    when theta = 0, u = 1, v =0.5
    when theta = 90, u = 0.5, v = 1
    when theta = 180, u = 0, v = 0.5
    when theta = 270, u = 0.5, v = 0

  3. #3
    Junior Member Regular Contributor
    Join Date
    Jun 2010
    Posts
    162
    Thank you. So for inbetween values of theta, u,v, will be linearly interpolated. Is it?
    Could you explain a bit about why you are assigning those values to u and v?
    Thanks again in advance.

  4. #4
    Senior Member OpenGL Pro
    Join Date
    Jan 2012
    Location
    Australia
    Posts
    1,108
    So for inbetween values of theta, u,v, will be linearly interpolated
    No its a circle. So the the inbetween depend on the the coordinates of the triangles yo use to make up circle.
    The u/v values can be calcuated from the ratio of the x/y of the triangle vertex to the x/y of the above values.

    eg a vertex at theta = 45 is r * 0.7071, r * 0.7071
    vertex values range from -1 * r to +1 * r and the correspondings textures coordinates go from 0 - 1
    so the texture coordate for a point in the circle is (1 + cos(theta))/2,(1 + size(theta))/2

  5. #5
    Junior Member Regular Contributor
    Join Date
    Jun 2010
    Posts
    162
    Thank you very much for the clarification. That meanstexture coordinate varies according to theta i.e. (1 + cos(theta))/2,(1 +sin(theta))/2).
    Suppose, for each triangle in the disk, the coordinates are as follow:

    glVertex3f( 0.0, 0.0, 0.0);
    glVertex3f( x, y, 0.0);
    glVertex3f(x1, y1, 0.0);

    where x,y are rcos(theta), rsin(theta)
    x1, y1 are rcos(theta_one), rsin(theta_one);
    Now I am able to calculate the (u,v) coordinates at (x,y) and (x1,y1) from thevalues of theta.

    But what about the texture coordinate at the origin i.e. (0.0, 0.0, 0.0)?


  6. #6
    Senior Member OpenGL Pro
    Join Date
    Jan 2012
    Location
    Australia
    Posts
    1,108
    (0.5,0.5.) - the centre of the texture

  7. #7
    Junior Member Regular Contributor
    Join Date
    Jun 2010
    Posts
    162
    Thank you so much for the clarification.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •