Bonjour tout le monde,
Je rencontre un problème avec ConvexShape, mais je suis quasiment certain que c'est de ma faute..
J'essaye de faire un rectangle arrondi mais le résulat ne suit pas
j'ai qulques points qui se trouvent a des endroits improbables( voir la piece jointe ) j'ai entouré, pour un coin, deux points qui ne sont meme pas listé dans ma shape et tracé en vert la forme qu'elle devrait normalement avoir.
Evidemment vous ne pourrez pas m’aider sans code:
C'est long, mais la moitié c'est du "debug"
RoundRect::RoundRect(const sf::Vector2f& position, const sf::Vector2f& dimensions,const float& borderRadius, const int unsigned& pointCount)
{
unsigned int i;
m_shape.setPointCount(pointCount*4); // m_shape est un sf::conexshape
for(i=0;i<pointCount;++i) //ANGLE 1
{
m_shape.setPoint(i, sf::Vector2f(position.x - borderRadius*std::sinf((i*PI)/((pointCount-1)*2)),position.y - borderRadius*std::cosf((i*PI)/((pointCount-1)*2))));
std::cout << "PosX du point " << i << ": " << m_shape.getPoint(i).x << std::endl;
std::cout << "PosY du point " << i << ": " << m_shape.getPoint(i).y << std::endl;
}
for(i=pointCount; i<pointCount*2; i++)
{
m_shape.setPoint(i, sf::Vector2f(position.x + dimensions.x + borderRadius - borderRadius*std::cosf((i*PI)/((pointCount-1)*2)),position.y - borderRadius*std::sinf((i*PI)/((pointCount-1)*2))));
std::cout << "PosX du point " << i << ": " << m_shape.getPoint(i).x << std::endl;
std::cout << "PosY du point " << i << ": " << m_shape.getPoint(i).y << std::endl;
}
for(i=pointCount*2; i<pointCount*3; i++)
{
m_shape.setPoint(i, sf::Vector2f(position.x + dimensions.x - borderRadius*std::sinf((i*PI)/((pointCount-1)*2)),position.y + dimensions.y - borderRadius + borderRadius*std::sinf((i*PI)/((pointCount-1)*2))));
std::cout << "PosX du point " << i << ": " << m_shape.getPoint(i).x << std::endl;
std::cout << "PosY du point " << i << ": " << m_shape.getPoint(i).y << std::endl;
}
for(i=pointCount*3; i<pointCount*4; i++)
{
m_shape.setPoint(i, sf::Vector2f(position.x + borderRadius - borderRadius*std::sinf((i*PI)/((pointCount-1)*2)), position.y + dimensions.y - borderRadius*std::sinf((i*PI)/((pointCount-1)*2))));
std::cout << "PosX du point " << i << ": " << m_shape.getPoint(i).x << std::endl;
std::cout << "PosY du point " << i << ": " << m_shape.getPoint(i).y << std::endl;
}
update();
}
Est-ce que quelqu'un sait d'où ca vient
Merci