У меня есть ошибка где-то в этом скрипте, который должен генерировать градиент. Когда глубина равна разности, градиент является совершенным, но приращения с плавающей запятой, похоже, прикручивают его. Я так долго смотрел на этот код, я не вижу ответа.Ошибка при генерации градиента
Что не так с этим кодом?
def interpolate(s, e, n):
start = list(s)
end = list(e)
incrementlst = []
for i in range(0,len(start)):
diff = int(end[i]) - int(start[i])
if diff == 0:
increment = 0.0
else:
increment =diff/n
incrementlst.append(increment)
return incrementlst
def incrementedValue(s, i, n):
start = list(s)
increment = list(i)
n = n-1
finallst = [0,0,0,0]
if n < 1:
return start
for i in range(0,len(start)):
finallst[i] = start[i] + (n*(increment[i]))
return finallst
def formatIncrementedValue(l):
cmykList = list(l)
formattedString = str(int(round(cmykList[0], 0))) + " " + str(int(round(cmykList[1], 0))) + " " + str(int(round(cmykList[2], 0))) + " " + str(int(round(cmykList[3], 0)))
return formattedString
# Get user inputs.
depth = int(ca_getcustomvalue ("depth", "0"))
start = ca_getcustomvalue("start", "0")
end = ca_getcustomvalue("end", "0")
startlst = start.split(" ")
startlst = [int(i) for i in startlst]
endlst = end.split(" ")
endlst = [int(i) for i in endlst]
# draw a line and incrementally change the pen colour towards the end colour
colorlst = interpolate(startlst, endlst, depth)
for i in range(1,depth-1):
color = formatIncrementedValue(incrementedValue(startlst, colorlst, i))
#Draw line at correct offset in colour "color"
Не могли бы вы предоставить значения для '' depth', start' и 'end', которые демонстрируют проблему? Когда вы говорите, что «приращения« плавающей точки », похоже, ввертывают его вверх», вы имеете в виду «появляется сообщение об ошибке» или «он работает, но результаты не выглядят так, как я ожидаю»? Отправьте сообщение об ошибке и/или изображение с результатом. – Kevin
Ваш отступ испорчен. Все строки «интерполяции» находятся на неправильном уровне отступов. –