Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 18
1

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

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

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

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

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

Но вся загвоздка в том, что чем дальше по спирали удаляюсь от центра, тем больше становится расстояние между координатами, как это исправить? Нужно, чтобы координаты точек находились на одном расстоянии вдоль кривой....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2012, 20:08
Ответы с готовыми решениями:

Ввести координаты 10 точек на плоскости и определить в какой из четвертей больше всего точек
Всем привет. Есть задание ввести координаты 10 точек. Не без помощи интернета смог написать код,...

Ввести координаты точек. Вычислить расстояния от всех точек до точки, введенной последней
С клавиатуры вводятся координаты точек на плоскости в виде строк, представляющих пару в формате...

В файле записано количество точек на плоскости и их координаты.Поместить эти координаты в двумерный динамический массив
В файле записано количество точек на плоскости и их координаты. Поместить эти координаты в...

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

4
60 / 60 / 10
Регистрация: 27.10.2011
Сообщений: 185
01.04.2012, 20:24 2
Чтобы расстояние между точками на спирали было постоянным, тебе нужен натуральный параметр. Это аналитически, либо численно. Если не знаешь, что такое натуральный параметр, то вечером напишу пример численного вычисления.
1
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 18
01.04.2012, 20:29  [ТС] 3
да, буду признателен
0
60 / 60 / 10
Регистрация: 27.10.2011
Сообщений: 185
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
60 / 60 / 10
Регистрация: 27.10.2011
Сообщений: 185
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2012, 21:36
Помогаю со студенческими работами здесь

Вычислить количество точек, попадающих в заданную область и координаты точек, не принадлежащих этой области
Ввести координаты n точек. Вычислить количество точек, попадающих в кольцо с внутренним радиусом R1...

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

Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек
Получилось сделать для координаты одной точки, а как сделать для множества точек, через цикл или...

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

Даны координаты N точек на плоскости. найти номера всех пар точек расстояние между которыми наибольшее
Даны координаты N точек на плоскости. найти номера всех пар точек расстояние между которыми...

Даны координаты n точек, указать номера тех точек, которые принадлежат кругу с центром в точке (x,y) и радиусом R
Даны координаты n точек (xi,yi), i=1,2,…,n (n≤100). Указать номера тех точек, которые принадлежат...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru