I've got some code that's searching pixel by pixel from a starting point, at a certain angle, until it finds a pixel (a non-white pixel)
It only has to search around 300 pixels: I'm currently using polar to Cartesian function 300 times...
def pol2cart(rotdist, cwangle): x = rotdist * numpy.cos(cwangle) y = rotdist * numpy.sin(cwangle) return(x, y)
... but it's very slow, up to 68 milliseconds per search (if it goes the whole 300 without finding anything) and I've got quite a lot of these searches to do... which is the main cause of my overall function taking about 20 seconds to run (I'd be happy with <2 seconds)
My theory is: if I can create a list of coordinates that describe a line from the centre point to the 300px distance end point, I only need to run pol2cart once (go get the end point) and then I can just iterate over my "line list"...
So I could do something like (psuedo):
If line == UppyDowny: for Y in line: Solve X elseIf line == LeftyRighty: for X in line: Solve Y linecoords.append((X,Y))
... I'm not asking for someone to code that for me, but I'm wondering if there's an existing common library function that achieves that? (as it'll no doubt be faster than how I would code the above and also a lot faster than 600 cos/sin calls)