442 |
ZVec paperx = coords1.transform(Pt(1, 0)) - paperorigin; |
ZVec paperx = coords1.transform(Pt(1, 0)) - paperorigin; |
443 |
ZVec papery = coords1.transform(Pt(0, 1)) - paperorigin; |
ZVec papery = coords1.transform(Pt(0, 1)) - paperorigin; |
444 |
|
|
445 |
ZPt borig = coords2.transform(Pt(0, 0)); |
AffineCoords cs2inv = coords2.getInverse(); |
|
ZVec b0 = coords2.transform(Pt(1, 0)) - borig; |
|
|
ZVec b1 = coords2.transform(Pt(0, 1)) - borig; |
|
|
|
|
|
b0 = 1.0 / (b0.x * b0.x + b0.y * b0.y) * b0; |
|
|
b1 = 1.0 / (b1.x * b1.x + b1.y * b1.y) * b1; |
|
446 |
|
|
447 |
#if 0 |
#if 0 |
448 |
{ |
{ |
522 |
for (float y = y_; i < 2; i++, y += ystep) { |
for (float y = y_; i < 2; i++, y += ystep) { |
523 |
glTexCoord2f(x, y); |
glTexCoord2f(x, y); |
524 |
|
|
525 |
// Map (x,y) into coords2 as (a,b) |
// Map (x,y) into coords2 as v |
526 |
|
|
527 |
ZPt pos = coords1.transform(Pt(x,y)); |
ZPt pos = coords1.transform(Pt(x,y)); |
528 |
float a = b0.dot(pos - borig); |
ZPt v = cs2inv.transform(pos); |
|
float b = b1.dot(pos - borig); |
|
|
float c = pos.z - borig.z; |
|
529 |
|
|
530 |
// Modulate distance from coords2 origin |
// Modulate distance from coords2 origin |
531 |
float t = (1 + a * a + b * b); |
float t = (1 + v.x * v.x + v.y * v.y); |
532 |
float m = 1 + c / t; |
float m = 1 + v.z / t; |
533 |
|
|
534 |
coords2.vertex(ZPt(m*a, m*b, c)); |
coords2.vertex(ZPt(m*v.x, m*v.y, v.z)); |
535 |
} |
} |
536 |
} |
} |
537 |
glEnd(); |
glEnd(); |