mgr.inz.Player I post too much Reputation: 218
Joined: 07 Nov 2008 Posts: 4438 Location: W kraju nad Wisla. UTC+01:00
|
Posted: Fri May 05, 2017 8:55 pm Post subject: |
|
|
Code: | function firstTransform(x,y)
-- reflect at y=3072
-- -(y-3072)+3072=-y+3072+3072=6144-y
y=6144-y
--scale x by 2
x=2*x
--rot 45° ccw at {2*1648 , 3072}
local a,b=(2*1648),3072
local t=1/(2^0.5)
x,y = x-a, y-b
return t*x - t*y + a, t*x + t*y + b
end
ScaleFirstTransform_scale=nil
function ScaleFirstTransform(xx,yy)
if ScaleFirstTransform_scale==nil then
-- point1 (1040,3072) -> (32,32)
local x1,y1=firstTransform(1040,3072)
-- point3 (2256,3072) -> (70,70)
local x3,y3=firstTransform(2256,3072)
--scale for x:
local ax = 38/(x3-x1) -- 70-32 = 38
local bx = 32-x1*ax
--scale for y:
local ay = 38/(y3-y1) -- 70-32 = 38
local by = 32-y1*ay
ScaleFirstTransform_scale = {{ax,bx},{ay,by}}
end
local t=ScaleFirstTransform_scale
local x,y = firstTransform(xx,yy)
return x*t[1][1]+t[1][2],y*t[2][1]+t[2][2]
end
function TwistedfateTransform(x,y)
return ScaleFirstTransform(x,y)
end
print('tests:')
print('(1040,3072) -> (32,32), we get:',TwistedfateTransform(1040,3072))
print('(1648,1856) -> (32,70), we get:',TwistedfateTransform(1648,1856))
print('(2256,3072) -> (70,70), we get:',TwistedfateTransform(2256,3072))
print('(1648,4288) -> (70,32), we get:',TwistedfateTransform(1648,4288))
print('(1344,2464) -> (32,51), we get:',TwistedfateTransform(1344,2464))
print('(1344,3680) -> (51,32), we get:',TwistedfateTransform(1344,3680))
print('(1952,2464) -> (51,70), we get:',TwistedfateTransform(1952,2464))
print('(1952,3680) -> (70,51), we get:',TwistedfateTransform(1952,3680))
print('(1648,3072) -> (51,51), we get:',TwistedfateTransform(1648,3072))
|
_________________
|
|