Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML, C++] Rysowanie sinusoidy - obliczanie wartości y na podstawie kąta

Ostatnio zmodyfikowano 2014-11-10 15:24
Autor Wiadomość
czosnek17
Temat założony przez niniejszego użytkownika
[SFML, C++] Rysowanie sinusoidy - obliczanie wartości y na podstawie kąta
» 2014-11-09 18:32:38
W jaki sposób mogę uzyskać pozycję y punktu dla każdego kąta? y = f(kat)
Chcę narysować falę z pikseli, ale mam tylko 3 kropki idące w dół i lekko w prawo, jakby kawałek wykresu.
C/C++
for( int i = 0; i < 360; i++ )
     pkt[ i ].setPosition( i, 200 + 1000 * sin( i * 3.14 / 180 ) );

P-120231
DejaVu
» 2014-11-09 19:05:37
C/C++
for( int i = 0; i < 360; i++ )
     pkt[ i ].setPosition( i, 200 + 100 * sin( i * 3.14f / 180.0f ) );

P-120234
czosnek17
Temat założony przez niniejszego użytkownika
» 2014-11-09 19:29:21
Kształt się zmienił ale dalej mam 3 kropki.
C/C++
#include <SFML/Graphics.hpp>
#include <cmath>
#include <iostream>

using namespace std;

int main()
{
    sf::RenderWindow okno( sf::VideoMode( 1366, 768 ), "" );
   
    sf::Sprite pkt[ 360 ];
    sf::Texture px;
    px.loadFromFile( "px.png" );
    for( int i = 0; i < 360; i++ )
    {
        pkt[ i ].setTexture( px );
        //pkt[i].setPosition(i,200+ 1000*sin(i*3.14/180));
        pkt[ i ].setPosition( i, 200 + 100 * sin( i * 3.14f / 180.0f ) );
        cout << "sin i = " << 100 * sin( i * 3.14f / 180.0f ) << endl;
    }
   
    while( okno.isOpen() )
    {
       
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Space ) )
        {
            okno.clear();
            break;
           
        }
       
        okno.clear( sf::Color::Black );
       
        for( int i = 0; i < 360; i++ )
        {
            okno.draw( pkt[ i ] );
        }
       
        okno.display();
        sf::sleep( sf::milliseconds( 1 ) );
       
    }
    return 0;
}
P-120236
DejaVu
» 2014-11-09 22:56:41
C/C++
#include <SFML/Graphics.hpp>
#include <cmath>
#include <iostream>

using namespace std;

int main()
{
    sf::RenderWindow okno( sf::VideoMode( 1366, 768 ), "omg" );
   
    sf::CircleShape pkt[ 360 ];
    for( int i = 0; i < 360; i++ )
    {
        pkt[ i ].setOutlineColor( sf::Color::White );
        pkt[ i ].setRadius( 3.0f );
        pkt[ i ].setPosition( i, 200 + 100 * sin( i * 3.14f / 180.0f ) );
        cout << "sin i = " << pkt[ i ].getPosition().y << endl;
    }
   
    while( okno.isOpen() )
    {
       
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Space ) )
        {
            okno.clear();
            break;
           
        }
       
        okno.clear( sf::Color::Black );
       
        for( int i = 0; i < 360; i++ )
        {
            okno.draw( pkt[ i ] );
        }
       
        okno.display();
        sf::sleep( sf::milliseconds( 1 ) );
       
    }
    return 0;
}
P-120259
czosnek17
Temat założony przez niniejszego użytkownika
» 2014-11-10 15:14:31
No teraz działa :) Ale czemu mój kod nie działa? Co jest źle?
P-120300
DejaVu
» 2014-11-10 15:17:00
Porównaj kod.
P-120301
czosnek17
Temat założony przez niniejszego użytkownika
» 2014-11-10 15:24:09
No porównałem i nie rozumiem. Jedyna różnica, to zmiana Sprite na CircleShape. Nic więcej nie widzę :/
P-120302
« 1 »
  Strona 1 z 1