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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Smogas12
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 18
#1

координаты точек на спирали - C++

01.04.2012, 20:08. Просмотров 1155. Ответов 4
Метки нет (Все метки)

Не знал в какой раздел написать...
Подскажите пожалуйста, как по спирали равномерно вывести символы? Точнее больше интересует сам алгоритм нахождения координат точек для вывода символов.

Использую такой цикл:

for(t2=0;t<50;t++)
{
x = 20*t2*sin(t2);
y = 20*t2*cos(t2);
}

Но вся загвоздка в том, что чем дальше по спирали удаляюсь от центра, тем больше становится расстояние между координатами, как это исправить? Нужно, чтобы координаты точек находились на одном расстоянии вдоль кривой....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 20:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос координаты точек на спирали (C++):

Ввести координаты точек. Вычислить расстояния от всех точек до точки, введенной последней - C++
С клавиатуры вводятся координаты точек на плоскости в виде строк, представляющих пару в формате “(x,y)”. Строка должна быть...

Определить, сколько точек пересечения имеют прямая и окружность и найти координаты этих точек - C++
Привет. Тут такое дело. В общем я неплохо знаю сам язык, но вот задачку решить не могу. Т.е не знаю как. С школьной математикой у меня...

Получить координаты точек сферы, равноотстоящие от соседних точек - C++
Здравствуйте. Знает ли кто-нибудь, как это сделать. Сгенерировать сферу я и так могу, то мне именно нужно, чтобы все точки сферы при этом...

Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек - C++
Получилось сделать для координаты одной точки, а как сделать для множества точек, через цикл или массив? #include &lt;stdio.h&gt; #include...

Даны координаты точек х1, у1, ... х15, у15. Если точка попадает на плоскость, ограниченную кругом x2 + y2 = R2 - вывести ее координаты - C++
Лабораторная работа 5. Одномерные массивы * * Для задач этого раздела необходимо составить графический алгоритм, провести...

Заданы координаты точки подвеса математического маятника A(xa, ya, za) и координаты одной из точек его наивысшего подъема B(xb, yb, zb). Найти координ - C++
помогите написать программу на с++ Добавлено через 37 секунд вот задача:Заданы координаты точки подвеса математического маятника...

4
TwiX
60 / 60 / 1
Регистрация: 27.10.2011
Сообщений: 189
01.04.2012, 20:24 #2
Чтобы расстояние между точками на спирали было постоянным, тебе нужен натуральный параметр. Это аналитически, либо численно. Если не знаешь, что такое натуральный параметр, то вечером напишу пример численного вычисления.
1
Smogas12
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 18
01.04.2012, 20:29  [ТС] #3
да, буду признателен
0
TwiX
60 / 60 / 1
Регистрация: 27.10.2011
Сообщений: 189
01.04.2012, 23:15 #4
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
    int needP, gotP;
    double phi, ep, x, y, x2, y2, xC, yC, D, l;
 
    x2 = y2 = xC = yC = 200; //центр спирали
    phi=0; ep=0.1; D=30; l=0; //ep - точность (чем меньше, тем меньше погрешность), D - расстояние между точками
    needP=50; gotP=0; //needP - сколько нужно точек
    Canvas->MoveTo(xC, yC);
 
 
    while (gotP<needP)
    {
        x = xC+10*phi*sin(phi);
        y = yC+10*phi*cos(phi);
        l+=Sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y));
        x2 = x; y2 = y;
 
        if (l>D) { 
            //когда мы сюда заходим, в x, y лежат координаты точки с индексом gotP
            l=0;
            Canvas->Ellipse(x-2, y-2, x+3, y+3);
            Canvas->LineTo(x, y);
            gotP++;
        }
        phi+=ep;
    }
Всё, что связано с Canvas можешь удалить - тестировал =)
1
Миниатюры
координаты точек на спирали  
TwiX
60 / 60 / 1
Регистрация: 27.10.2011
Сообщений: 189
02.04.2012, 21:36 #5
А еще, не подскажете, как высчитать в полученных точках на спирали угол наклона букв?
В каждой точке спирали угол наклона будет равен значению параметра на кривой. В моём примере это phi (надо помнить, что это значение в радианах).
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
39
40
41
42
43
44
void MyTextOut(TCanvas *Canvas, int x, int y, double phi, String text)
{
  LOGFONT lf;                         // определяем структуру шрифта
  Canvas->Brush->Style = bsClear;     // устан прозрачный стиль кисти
  ZeroMemory(&lf, sizeof(LOGFONT));   //очищаем память
  lf.lfHeight = 20;                  // высота шрифта (размер подбирается системой)
  lf.lfEscapement = phi/3.1415*180*10 ; // угол поворота например: 45*00" = 450
  lf.lfOrientation = 900;              // ориентация  в десятых долях градуса
                                       // под WinXP почему-то не работает :(
  lf.lfCharSet = DEFAULT_CHARSET;       // набор символов
  strcpy(lf.lfFaceName, "Times New Roman");       // шрифт
  Canvas->Font->Handle = CreateFontIndirect(&lf); // создаем из структуры хэндл
                         // и устанавливаем его текущим
  Canvas->TextOut(x, y, text);           // выводим текст на холст (канву)
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int needP, gotP;
    double phi, ep, x, y, x2, y2, xC, yC, D, l;
 
    x2 = y2 = xC = yC = 200; //центр спирали
    phi=0; ep=0.1; D=30; l=0; //ep - точность (чем меньше, тем меньше погрешность), D - расстояние между точками
    needP=50; gotP=0; //needP - сколько нужно точек
    Canvas->MoveTo(xC, yC);
 
 
    while (gotP<needP)
    {
        x = xC+10*phi*sin(phi);
        y = yC+10*phi*cos(phi);
        l+=Sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y));
        x2 = x; y2 = y;
 
        if (l>D) {
            //когда мы сюда заходим, в x, y лежат координаты точки с индексом gotP
            l=0;
            Canvas->Ellipse(x-2, y-2, x+3, y+3);
            //Canvas->LineTo(x, y);
            gotP++;
            MyTextOut(Canvas, x, y, phi, "A");
        }
        phi+=ep;
    }
}
1
Миниатюры
координаты точек на спирали  
02.04.2012, 21:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2012, 21:36
Привет! Вот еще темы с ответами:

Найти координаты числа в бесконечной спирали из чисел - C++
Дана бесконечная во все стороны спираль из чисел, в центре которой - единица, нужно найти координаты числа по самому числу. (Прикрепил) В...

Подсчитать количество точек, которые находятся в кругу радиусом R с центром в начале координат. Координаты точек заданы массивами X (100), Y (100) - C++
Подсчитать количество точек, которые находятся в кругу радиусом R с центром в начале координат. Координаты точек заданы массивами X (100),...

Координаты точек - C++
Напишите код программы. Заранее всем спасибо!!! Написать программу с использованием структуры, состоящей из переменных (координат точек)...

Координаты точек - C++
Представить координаты точек в трехмерном пространстве в виде структуры, состоящей из трех вещественных полей. Написать программу ввода...


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

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

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