Нахождение расстояние от ближайшей точки до ближайшей точки sfml
У меня есть алгоритм рисования двух convex кругов. Я хотел создать что то похожее на метасферу из блендера, но столкнулся с проблемой: я не понимаю как находить расстояние от ближайшей точки круга, до ближайшей точки второго круга. Я могу найти расстояние от origin круга, но не от его точек. Мне нужно просчитывать расстояние от каждой точки круга. Если расстояние между точками меньше чем указанное мной, то я деформирую точки кругов так, что бы они тянулись друг к другу.
Вот алгоритм отрисовки convex круга
#include <SFML/Graphics.hpp>
#include <cmath>
int main()
{
int i = 0;
int i2 = 0;
double Pi = 3.14159265358979323846;
sf::RenderWindow window(sf::VideoMode(360, 800), "SFML ConvexShape");
sf::ConvexShape ball;
ball.setPointCount(30);
ball.setFillColor(sf::Color::Red);
ball.setOutlineColor(sf::Color::Blue);
ball.setOutlineThickness(8.f);
float rad = 100.f;
for (i; i < ball.getPointCount(); i++)
{
float ang = i * 2 * Pi / ball.getPointCount();
float x = rad * std::cos(ang);
float y = rad * std::sin(ang);
ball.setPoint(i, sf::Vector2f(x, y));
}
ball.setPosition(180, 200);
int j = 0;
sf::ConvexShape ball2;
float rad2 = 100.f;
ball2.setPointCount(30);
ball2.setFillColor(sf::Color::Red);
ball2.setOutlineColor(sf::Color::Blue);
ball2.setOutlineThickness(8.f);
for (j; j < ball2.getPointCount(); j++)
{
float ang2 = j * 2 * Pi / ball2.getPointCount();
float x2 = rad2 * std::cos(ang2);
float y2 = rad2 * std::sin(ang2);
ball2.setPoint(j, sf::Vector2f(x2, y2));
}
ball2.setPosition(180, 600);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(ball);
window.draw(ball2);
window.display();
}
return 0;
}
Источник: Stack Overflow на русском