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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Последовательно вводятся габариты n прямоугольников. В процессе ввода находить площадь их пересечения, не запоминая самих габаритов. http://www.cyberforum.ru/cpp-beginners/thread536138.html
Площади прямоугольников. Прямоугольник на плоскости a<=x<=b; c<=y<=d задается четырьмя числами (его габаритами): a,b,c,d. Последовательно вводятся габариты n прямоугольников. В процессе ввода...
C++ Перегрузка операции Здравствуйте! Нужно перегрузить операцию << для вставки полей объекта класса в файл. Есть класс Hostel c полями FIO, GroupNumber и RoomNumber. Моя перегрузка: ofstream& operator << (ofstream&... http://www.cyberforum.ru/cpp-beginners/thread536126.html
Функция внутри класса C++
Здраствуйте. Очень прошу знающих людей помочь мне. Покажите простой пример - Класс, внутри этого класса функция, которая вычисляет квадрат числа (которое должен ввести сам пользователь), а затем...
Вычислить определитель матрицы 3х3 C++
Дана матрица 3х3 нужно вычислить определитель матрицы 1 2 3 4 5 6 7 8 9 Заранее спасибо
C++ Сложение чисел в строках. http://www.cyberforum.ru/cpp-beginners/thread536080.html
Здравствуйте, возникла проблема. При решение задачи нужно сложить числа в строках. То есть, допустим дано две строки s1=56 и s2=43. И нужно сложить Цифры в обратном порядке, то есть 3 и 5, 4 и 6....
C++ В двухмерной матрице найти суму определенных елементов Как найти суму елементов изображенных на картинке? подробнее

Показать сообщение отдельно
TwiX
60 / 60 / 1
Регистрация: 27.10.2011
Сообщений: 189
02.04.2012, 21:36
А еще, не подскажете, как высчитать в полученных точках на спирали угол наклона букв?
В каждой точке спирали угол наклона будет равен значению параметра на кривой. В моём примере это 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
Миниатюры
координаты точек на спирали  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru