• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Utknąłem przy rysowaniu superelipsy w C++

0 głosów
202 wizyt
pytanie zadane 23 marca 2021 w C i C++ przez mattaha Użytkownik (690 p.)

Witam,

Mam za zadanie napisać program w C++ rysujący superelipsę korzystając z gotowej biblioteki GUI. Informacje i wzory dotyczące superelips ściągnąłem z wiki. Niestety mój program nie rysuje tego co powinien. Zamiast narysować mi dla n=1/2 figurę o kształcie gwiazdy:

Program rysuje mi

#include "Simple_window.h"
#include "Graph.h"

double sgn(double x) {
    if (x == 0) return 0;
    return x < 0 ? -1 : 1;
}

int main() {
    using namespace Graph_lib;
    Simple_window win {Point{100, 100}, 600, 400, "Moje okno"};

    Open_polyline superellipse;
    Point p {50, 50};
    int N = 200;
    double n = 0.5;
    double a = 1;
    double b = 1;
    double theta = 0;
    for (int i = 0; i < N; ++i) {
        theta += 1.0/N;
        double x = pow(abs(cos(theta)), 2.0/n)*a*sgn(cos(theta));
        double y = pow(abs(sin(theta)), 2.0/n)*b*sgn(sin(theta));
        superellipse.add(Point(p.x + x*100, p.y + y*100));
    }
    win.attach(superellipse);

    win.wait_for_button();
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 23 marca 2021 przez Great Stary wyjadacz (12,660 p.)
wybrane 23 marca 2021 przez mattaha
 
Najlepsza

Parametr theta powinien mieć wartości  {\displaystyle 0\leq t<2\pi ,} a w programie osiąga maksymalnie wartość 1 (200 * 1 / N). Powinieneś tak zmieniać kąt:

theta += 2.0 * pi / N;
komentarz 23 marca 2021 przez mattaha Użytkownik (690 p.)

Dziękuję bardzo laugh

Podobne pytania

0 głosów
1 odpowiedź 612 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez MasterFlamaster Początkujący (300 p.)
0 głosów
1 odpowiedź 435 wizyt
pytanie zadane 1 listopada 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)
0 głosów
0 odpowiedzi 410 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez mmr0429 Bywalec (2,010 p.)

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...