Таким образом, идея в том, что я хочу получить 20 точек в координатах X, Y между двумя щелчками по кругу. Единственный критерий заключается в том, что точки всегда должны находиться между меньшим углом между двумя щелчками.
Допустим, средняя точка окружности равна c .x, c .y * 1004. * радиус равен c .r и два щелчка: p1.x, p1.y и p2.x, p2.y
То, что я пытался сделать до сих пор, это получить угол обоих щелчков от оси X относительно центра круга.
float from = std::fmod(atan2(p1.y - c.y, p1.x - c.x), 2 * M_PI); //Update range to 0-2pi
float to = std::fmod(atan2(p2.y - c.y, p2.x - c.x), 2 * M_PI);
И затем получить расстояние между двумя щелчками. И вычислите координаты точек в al oop.
float fi = from + ((to - from)* i / 20); // 20 points needed
vertices[i] = vec2(c.x + c.r * cosf(fi), c.y + c.r * sinf(fi)); // x = cx+r*cos(fi), y=cy+r*sin(fi)
. Проблема с этим подходом состоит в том, что в некоторых случаях он возвращает внешнюю кривую вихря. На рисунке показано 3 таких кривых за 3 клика. Рассчитанные кривые показаны белым, синий - желаемым выходом. 1020 * рендеринга *