[SFML, C++] Rysowanie sinusoidy - obliczanie wartości y na podstawie kąta
Ostatnio zmodyfikowano 2014-11-10 15:24
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. for( int i = 0; i < 360; i++ ) pkt[ i ].setPosition( i, 200 + 1000 * sin( i * 3.14 / 180 ) );
|
|
DejaVu |
» 2014-11-09 19:05:37 for( int i = 0; i < 360; i++ ) pkt[ i ].setPosition( i, 200 + 100 * sin( i * 3.14f / 180.0f ) );
|
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2014-11-09 19:29:21 Kształt się zmienił ale dalej mam 3 kropki. #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 + 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; }
|
|
DejaVu |
» 2014-11-09 22:56:41 #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; }
|
|
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? |
|
DejaVu |
» 2014-11-10 15:17:00 Porównaj kod. |
|
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ę :/ |
|
« 1 » |