I found the problem, there is nothing wrong with the calculation method of the graph, but I missed a very important step in the middle.

In the program, 360° is not 360, but PI*2. The i in the for loop represents radians. The current i is an integer from 1 to 360. This is not the "radian" required in the algorithm, which directly leads to problems in the title.

This problem was solved when I converted i from integer to radians via radians() method.
vector pos = {0, 0, 0};
int pointsNum = chi("point_num");
float a, b, c, t;
a = chf("a");
b = chf("b");
c = chf("c");
t = chf("t");
for(int i = 0; i < pointsNum; i++) {
float theta = radians(i);
pos.x = cos(a * theta + t) + cos(b * theta + t) / 2 + sin(c * theta + t) / 3;
pos.y = sin(a * theta + t) + sin(b * theta + t) / 2 + cos(c * theta + t) / 3;
addpoint(0, pos);
}

It can be seen that the point numbers are arranged in sequence according to the position, so that when using add node, you can get a flat outline.