У меня есть следующий код, который генерирует x_d
и x_y
. Затем я хочу добавить или вычесть эти значения из последних вычисленных значений x и y (возвращается из config.get_last_point()
) и сохранить их в последней точке.Python: если значение изменения состояния
def generate_asv_configuration(
asv_count, generate_left_concavity, corner_angle=None):
# Create a configuration
config = Configuration(generate_left_concavity)
for i in range(2, asv_count):
# Calculate the angle to be used in the calculations
turning_angle = turning_angle - delta_angle
# Calculate the delta-x, and -y.
x_d = MAX_BOOM_LENGTH * math.cos(turning_angle)
y_d = MAX_BOOM_LENGTH * math.sin(turning_angle)
# print generate_left_concavity
if (i % 2) == 0:
print '1: Left, i: {0}'.format(i)
x = config.get_last_point()[0] - x_d
y = config.get_last_point()[1] - y_d
else:
print '2: Right, i: {0}'.format(i)
x = config.get_last_point()[0] + x_d
y = config.get_last_point()[1] + y_d
config.add_point((x, y))
Проблема у меня в том, что код генерирует изображение, аналогичное . Это выглядит хорошо, разные точки имеют разные углы (вы можете видеть, что некоторые из них почти закрыты, другие очень открыты). Однако, когда я меняю первый if
на (i % 2) == 0 and generate_left_concavity
, и я называю это generate_left_concavity
True
, я думаю, что-то похожее на . Проблема в том, что существуют действительно открытые полигоны.
К сожалению, я пробовал несколько разных условий, и всякий раз, когда у меня есть условие generate_left_concavity
, оно всегда генерируется по-разному. Я даже опробовал вложенные условия if
.
Я считаю, что я даже попробовал иметь вышеуказанные два условия, затем в более позднем состоянии, я проверяю if generate_left_concavity
, если это так, я добавляю 2 * x_d
для компенсации. Он по-прежнему генерирует изображения, похожие на .
Я не вижу, насколько мой код может напрямую повлиять на генерацию вычислений x и y на основе состояния if
, но я мог ошибаться. Однако я могу гарантировать, что они всегда входят в одну ветвь с условием, но порождают по-разному.
Что произойдет, если вы используете '(i% 2) == 0 и True'? Что произойдет, если вы используете '((i% 2) == 0) и True'? –
Когда вы создаете '' 'config''',' '' generate_left_concavity''' влияет на последовательность точек, с которых начинается? – wwii
Я не уверен, что я действительно понимаю разницу между предполагаемым выходом и выпущенным решением. Мне кажется, что-то с углами слишком широкие или узкие. Однако, просто глядя на код, в потоке, похоже, есть асимметрия. 'turn_angle = turn_angle - delta_angle' всегда выполняется вне условного выражения, в то время как внутри условной одной ветви добавляется, а другая вычитается. –