Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
1

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

03.05.2013, 17:49. Просмотров 1627. Ответов 11
Метки нет (Все метки)

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
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2013, 17:49
Ответы с готовыми решениями:

Нарисовать заданное количество точек окружности, равноудалённых друг от друга
Ребят, помогите! Делаю исследовательскую работу по математике и встал в ступор при первой же...

Уравнение геометрического места точек равноудаленных от двух данных точек
Найти уравнение геометрического места точек равноудаленных от двух точек B(-1;2) и C(3;4)

Определить координаты равноудаленных точек
Доброго времени суток! Подскажите пожалуйста, как можно определить координаты точек, которые равно...

Множество точек, равноудаленных от параболы
Допустим обычная парабола f(x) = - x ^ 2 + 10. Можно ли какой-либо функцией, пусть кусочно, задать...

11
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
17.05.2013, 11:21  [ТС] 2
посоветуйте пожалуйста где ещё можно спросить (:
0
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
17.05.2013, 11:25 3
если то что на рисунке сделали вы не означает ли это что вы сделали задание? ведь по заданию нужно построить эту фигуру. или нет?
0
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
20.05.2013, 14:36  [ТС] 4
Цитата Сообщение от vxg Посмотреть сообщение
если то что на рисунке сделали вы не означает ли это что вы сделали задание? ведь по заданию нужно построить эту фигуру. или нет?
то что на рисунке сделал я,
вектор содержит конечное множество реальных точек по которым строится суперэллипс,
среди этих точек нужно найти N таких, чтобы они были вершинами правильного многоугольника, по которым нужно построить звезду:
0
Миниатюры
Соеденить N равноудаленных точек на суперэллипсе  
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
20.05.2013, 14:46 5
Цитата Сообщение от Cynacyn Посмотреть сообщение
нужно построить звезду
выберите любую точку на супер эллипсе, переберите все остальные точки, если расстояние до анализируемой точки вас устраивает - включайте ее в свою фигуру и стройте до нее линию
0
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
20.05.2013, 18:39  [ТС] 6
Цитата Сообщение от vxg Посмотреть сообщение
выберите любую точку на супер эллипсе, переберите все остальные точки, если расстояние до анализируемой точки вас устраивает - включайте ее в свою фигуру и стройте до нее линию
да в общем я понимаю что именно так и нужно сделать
но у меня трудности именно с проверкой и условием

допустим даже есть вектор, который содержит в себе объекты класса,
C++
1
2
3
4
5
struct Distance {
Point A;
Point B;
double distanceAB;
};
для всех возможных комбинаций точек из _points без повторений ( в том смысле что есть комбинации points[0] - points[1], points[0] - points[2] ... points[0] - points[points.size()-1] ... points[points.size()-2] - points[points.size()-1])

но как среди этого множества осуществить правильную выборку не могу понять
0
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
20.05.2013, 23:39 7
Цитата Сообщение от Cynacyn Посмотреть сообщение
как
нужно уточнить условия. там сказано
Цитата Сообщение от Cynacyn Посмотреть сообщение
Выберите N точек на суперэллипсе
Цитата Сообщение от Cynacyn Посмотреть сообщение
Пусть эти точки лежат на равном расстоянии друг от друга. Соедините каждую из этих N точек с одной или несколькими другими точками
что хотел сказать человек произнося "на равном расстоянии"? вот я взял точку. и еще одну. я могу найти, наверное, минимум еще одну лежащую на таком же расстоянии (построив окружность с центром в первой точке и проходящую через вторую). однако получившаяся фигура будет уродом. этого ли мы хотим?
0
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
21.05.2013, 10:18  [ТС] 8
Цитата Сообщение от vxg Посмотреть сообщение
нужно уточнить условия. там сказано


что хотел сказать человек произнося "на равном расстоянии"? вот я взял точку. и еще одну. я могу найти, наверное, минимум еще одну лежащую на таком же расстоянии (построив окружность с центром в первой точке и проходящую через вторую). однако получившаяся фигура будет уродом. этого ли мы хотим?
думаю речь о том, чтобы расстояние от первой точки до второй было равным расстоянию от второй до третей, от третей до четвертой... и от последней до первой
0
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
21.05.2013, 13:06 9
1 взять одну из точек
2 провести вокруг нее окружность заданного радиуса
3 в точке пересечения окружности и следующего лепестка поставить новую точку
4 повторить для нее такие же процедуры
---
полученная фигура может быть 1 бесконечной 2 не циклической (то есть обойдя все лепестки вы можете получить отличное от заданного расстояние между первой и крайней точкой)
0
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
21.05.2013, 17:56  [ТС] 10
Цитата Сообщение от vxg Посмотреть сообщение
1 взять одну из точек
2 провести вокруг нее окружность заданного радиуса
3 в точке пересечения окружности и следующего лепестка поставить новую точку
4 повторить для нее такие же процедуры
---
полученная фигура может быть 1 бесконечной 2 не циклической (то есть обойдя все лепестки вы можете получить отличное от заданного расстояние между первой и крайней точкой)
я не понимаю что значит:
- "заданного радиуса" по каким критериям необходимо задавать радиус относительно параметров по которым строится эллипс a, b, n, m и числа точекN?
- "следующего лепестка"?

ох..
0
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
22.05.2013, 13:57 11
Цитата Сообщение от Cynacyn Посмотреть сообщение
по каким критериям необходимо задавать радиус
этого я не знаю. наверное от балды. вам же сказали построить какую-то звезду. ну так вот она - какая-то звезда. или я недопонимаю условий.
Цитата Сообщение от Cynacyn Посмотреть сообщение
следующего лепестка
суперэллипс он как бы цветок - всего 4 лепестка
1
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
23.05.2013, 10:05  [ТС] 12
Цитата Сообщение от vxg Посмотреть сообщение
этого я не знаю. наверное от балды. вам же сказали построить какую-то звезду. ну так вот она - какая-то звезда. или я недопонимаю условий.

суперэллипс он как бы цветок - всего 4 лепестка
я всё ещё в замешательстве,
спасибо, энивэй (:
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2013, 10:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти множество равноудаленных точек
Мне кажется или это не совсем очевидно: Пусть на плоскости {\mathbb{R}}^{2} дана метрика \rho...

Уравнение геометрического места точек равноудаленных от двух других
Найти уравнение геометрического места точек равноудаленных от двух точек А1(3;2;1) и А2(-4;-2;1)

Найти геометрическое место точек, равноудаленных от двух окружностей
Найти геометрическое место точке, равноудаленных от двух окружностей {(x-10)}^{2}+{y}^{2}=1 и...

Написать программу, которая генерирует координаты точек в пространстве, равноудаленных от центра отсчета
Здравствуйте! Помогите пожалуйста решить следующую задачу: В Mathcad необходимо написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.