Форум программистов, компьютерный форум CyberForum.ru

Соеденить N равноудаленных точек на суперэллипсе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Наследование, виртуальный метод просмотра, метод (сравнение символьных массивов) http://www.cyberforum.ru/cpp-beginners/thread854054.html
Доброго времени суток! Прошу помочь разобраться с заданием: Напишите программу на языке программирования С++, которая должна содержать: - базовый класс, включающий: - два элемента в виде строк символов S1 и S2; - конструктор с параметрами для создания динамических строковых объектов; - деструктор; - виртуальный метод просмотра текущего состояния объекта; - производный класс,...
C++ Операции над строкой. Подсчитать количество слов, которое начинается с той буквы, которой заканчивается предыдущее слово Дано предложение, слова в нем разделены пробелами. Подсчитать количество слов, которое начинается с той буквы, которой заканчивается предыдущее слово. Если таких слов больше половины, то их необходимо перенести в конец предложения. Если я ввожу строку : okno opera stryna argentina akter программа выводит: okno stryna opera argentina akter. Но если пробую: okno teatr rabota africa akter то... http://www.cyberforum.ru/cpp-beginners/thread854051.html
C++ Как переделать на консоль?
данная задача сделано в форме, нужно чтоб все тодже самое, считалось в консоли //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init)
Вычисление дискриминанта C++
Вроди простая программа но почему то работает некоректно не пойму в чем причина С++ #include "stdafx.h" #include <iostream> #include <string> #include <windows.h> #include <fstream> #include <math.h> using namespace std; bool Discrim () {
C++ Error: jump to case label http://www.cyberforum.ru/cpp-beginners/thread854041.html
Здравствуйте. Не один раз встречался с такой ошибкой. Сам не знаю, что она означает, но выправлял я ее с помощью if вместо switch - case. Так вот: здесь уже так у меня не получиться так исправить. Поясните пожалуйста, что эта ошибка означает и как ее исправить. #include <iostream> #include <conio.h> #include <vector> #include <cstdlib> enum KEYS { SPACE = 32, ENTER = 13, BACKSPACE = 8 };...
C++ Дерево результатов футбольных соревнований Нужно сделать дерево результатов футбольных соревнований. В моем случае это футбол. Турнир должен выглядеть как Лига Чемпионов. Групповой этап, плей-офф и финал. Голы, которые забили команды, должны задаваться рандомно. Сделал плей-офф, но он не работает так как надо. Подскажите, каким образом лутше всего это реализовать? #include <iostream> using namespace std; class championleague {... подробнее

Показать сообщение отдельно
Cynacyn
 Аватар для Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
03.05.2013, 17:49     Соеденить N равноудаленных точек на суперэллипсе
13. Поищите в веб информацию о суперэллипсе, чтобы лучше представит его себе.
Напишите программу, которая рисует звездообразные шаблоны, соединяя точки, лежащие на суперэллипсе. Пусть параметры а, b, m, n и N вводятся как аргументы. Выберите N точек на суперэллипсе, определенном параметрами a, b, n и m. Пусть эти точки лежат на равном расстоянии друг от друга. Соедините каждую из этих N точек с одной или несколькими другими точками (если хотите, можете задать количество таких точек с помощью дополнительного аргумента или использовать число N-1, т.е. все другие точки).
Здравствуйте (:
Сейчас прохожу 12 главу Страуструпа "Принципы и Практика использования С++", начинается работа с графикой, используя FTLK. Выше приводится текст из упражнения 13.

Есть вектор содержащий координаты точек, по которым строится суперэллипс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//------------------------------------------------------------------------------
 
int sgn(double d) {
        
    if (d < 0)
        return -1;
    if (d == 0)
        return 0;
    if (d > 0)
        return 1;
    // exception
    error("sgn: something gone wrong\n");
}
 
 
//------------------------------------------------------------------------------
 
vector<Point> superellipse(double a, double b, double m, double n, double precision = 0.01, int xCenter = 200, int yCenter = 200) {
    if (precision >= 1.00 || precision < 0.001)
        error ("use numbers from range [0.001 ; 1.00) for precision parametr\n");
    
    vector<Point> points;
    Point temp;
    Point P;
    for (double d = -1.0; d < 1.00; d += precision) {
        double t = d*M_PI;
        int x = pow((abs(cos(t))),2.0/m) * a * sgn(cos(t));
        int y = pow((abs(sin(t))),2.0/n) * b * sgn(sin(t));
        P = Point(x + xCenter, y + yCenter);
        if (P != temp) // ignore dublicates
            points.push_back(P);
        temp = P;
    }
 
    return points;
}
 
//------------------------------------------------------------------------------
Я не особо силен в математике, мозги уже несколько дней набекрень с этим заданием. Помогите позязя.

Вот так выглядит superellipse(a = 7, b = 13, m = 0.5, n = 0.9, precision = 0.01, xCenter = 300, yCenter =300) http://iceimg.com/i/95/36/d9621ad8e7.png
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru