Hello
y'a plein d'erreurs dans ton code, déjà pourquoi tu calcules tout avec des entiers? vu que le sinus est entre -1 et 1 ça pourra jamais marcher.... pareil pour la position X tu files que des entiers donc forcemment vu que la période est de 6 et quelques, tu va rien voir.
J'ai fait une correc rapide qui marche à peu près, mais de toute façon très rapidement la série entière converge pas super bien...
//Le main
#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <vector>
#include <cmath>
using namespace sf;
using namespace std;
class Trace
{
public:
Trace(int n);
sf::RectangleShape Place(double positionX);
int Factoriel(int n);
int valeur();
private:
unsigned int m_local;
double m_points;
long long m_valeurs;
double m_variable;
sf::RectangleShape m_ordonnee;
int m_n;
};
Trace::Trace(int n): m_n(n)
{
}
RectangleShape Trace::Place(double positionX) //ICI le beug
{
m_points = 0;
for(int i(0); i < m_n ; ++i)
{
m_local = 2*i+1;
m_variable = pow((int)-1,(double)i)*pow((double)positionX,(double)m_local);
m_valeurs = Factoriel(m_local);
m_points = m_variable/m_valeurs + m_points;
}
cout << m_points << " vs " << sin(positionX) << '\n';
m_ordonnee.setSize(sf::Vector2f(10, 10));
m_ordonnee.setOutlineColor(sf::Color::White);
//m_ordonnee.setFillColor(sf::Color::Red);
m_ordonnee.setPosition(positionX*100+100, m_points*400 + 100);
//m_ordonnee.setPosition(10,10);
return m_ordonnee;
}
int Trace::Factoriel(int n)
{
int m(1);
for(int i(1); i <= n; ++i)
{
m = m*i ;
}
return m;
}
using namespace sf;
using namespace std;
int main()
{
RenderWindow window(VideoMode(800,600), "play", Style::Titlebar);
window.setFramerateLimit(10);
bool unique(true);
Trace trace(10);
//Repere repere("ressources/repere.png");
int i(0);
while(window.isOpen())
{
Event event;
window.clear();
while(window.pollEvent(event))
{
if((event.type == Event::KeyReleased) && (event.key.code == sf::Keyboard::Escape))
{
window.close();
}
}
for(i = 0; i< 100 ; ++i)
{
window.draw(trace.Place(i/10.0));
}
window.display();
}
return EXIT_SUCCESS;
}