triangle update