[EMAIL PROTECTED] wrote:
Thanks for enlightening me, Valentin :)
There's still something fishy about it, it's not really doing what it
should... here's the code (and I'm having a float attack :) )
Maybe you can spot where it goes wrong...
Chris.
I don't really understand this spherize function.
but check out this one I just wrote, maybe it does what you need. I
think it does pretty much the same as the corresponding photoshop
filter.
notice: code not optimized for speed yet
-- optional parameters tPercent, tCenter, tRadius
-- defaults: tPercent=100%, tCenter=center of image
on spherize (tImage, tPercent, tCenter, tRadius)
w = tImage.width
h = tImage.height
if voidP(tPercent) then tPercent=100.0
if voidP(tCenter) then tCenter = point(w/2, h/2)
if voidP(tRadius) then tRadius = min(w/2, h/2)
Math = newObject("Math")
newImage = tImage.duplicate()
centerX = tCenter[1]
centerY = tCenter[2]
rr = tRadius / sqrt(1- power(1-tPercent/100.0, 2) )
f = Math.asin(tRadius/rr) -- 100%: pi/2
repeat with y = 0 to h-1
repeat with x = 0 to w-1
d0 = sqrt(power(x-centerX,2)+power(y-centerY,2))
if d0>0 and d0<tRadius then
d1 = tRadius * Math.asin(d0/rr)
k = d1/d0/f
xNew = centerX + (x-centerX)* k
yNew = centerY + (y-centerY)* k
newImage.setPixel(x, y, tImage.getPixel(xNew, yNew))
end if
end repeat
end repeat
tImage.copyPixels(newImage, newImage.rect, newImage.rect)
put "done"
end
[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/lingo-l.cgi To post messages to the list, email
[email protected] (Problems, email [EMAIL PROTECTED]). Lingo-L is for
learning and helping with programming Lingo. Thanks!]