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

Фигуры Лиссажу

12.12.2015, 00:39. Показов 3685. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Суть задания заключается в изображении на panel в Visual Windows Form фигуры Лиссажу, в зависимости от значений амплитуд, частот и разности фаз. Согласно x(t)=A_x cos(ω_x t+φ_x), y(t)=A_y cos(ω_y t+φ_y), наклон кривых, эллипс или круг зависит от отношения A_y/A_x. А мой код упорно выдает только для случая A_y/A_x=1. Т.е. у меня всегда кривые под 45", а при fi=pi/2 выдает круг. Давно ломаю голову, никак не могу понять, в чем причина. Прилагаю код в кнопке:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Color^col = gcnew Color();
        Pen^myPen = gcnew Pen(col->Red);
        Graphics^image;
        image=panel1->CreateGraphics();
        image->Clear(col->WhiteSmoke);
        double w, h;
        int arrx;
        w = panel1->Width;
        h = panel1->Height;
        image->DrawLine(myPen, 0, h / 2, w, h / 2);
        image->DrawLine(myPen, w/2, 0, w/2, h);
        image->DrawLine(myPen, w / 2, 0, (w / 2)-5, 5);
        image->DrawLine(myPen, w / 2, 0, (w / 2)+5, 5);
        arrx = w - 5;
        image->DrawLine(myPen, w, h / 2, arrx, (h / 2) + 5);
        image->DrawLine(myPen, w, h / 2, arrx, (h / 2) - 5);
        double A1, A2, w1, w2, fi1, fi2, rez1, rez2;
        A1 = System::Convert::ToDouble(textBox1->Text);
        A2 = System::Convert::ToDouble(textBox2->Text);
        w1 = System::Convert::ToDouble(textBox3->Text);
        w2 = System::Convert::ToDouble(textBox4->Text);
        fi1 =3.14*( System::Convert::ToDouble(textBox5->Text))/180;
        fi2 = 3.14*(System::Convert::ToDouble(textBox6->Text))/180;
        
        rez1 = w1 / w2;
        textBox7->Text = System::Convert::ToString(rez1);
 
        rez2 = fi2 - fi1;
        textBox8->Text = System::Convert::ToString(rez2);
        double hg;
        int N = 501;
        
        double *X = new double [N];
        double *Y = new double[N];
        double min, max, t;
        min = -2 * 3.14;
        max = 2 * 3.14;
        hg = (max - min) / N;
        for (int i = 0; i < N; i++)
        {
            t = min + i*hg;
            X[i] = func(A1, w1, fi1, t);
            Y[i] = func(A2, w2, fi2, t);
        }
        double X_max = -100, X_min = 100, Y_max = -100, Y_min = 100;
        for (int i = 0; i < 501; i++)
        {
            if (X[i]<X_min) { X_min = X[i]; };
            if (X[i]>X_max) { X_max = X[i]; };
            if (Y[i]>Y_max) { Y_max = Y[i]; };
            if (Y[i]<Y_min) { Y_min = Y[i]; };
        }
        float  px, py, px1, py1;
        px = (w - w*(X[0]-X_min)/ (X_max - X_min));
        py = (h - h*(Y[0]-Y_min) / (Y_max - Y_min));
        for (int i = 1; i < 501; i++)
        {
            px1 = (w - w*(X[i]-X_min) / (X_max - X_min));
            py1 = (h - h*(Y[i]-Y_min) / (Y_max - Y_min));
            image->DrawLine(myPen, px, py, px1, py1);
            px = px1;
            py = py1;
        }
Функция:
C++
1
2
3
4
double func(double A, double W, double Fi, double t)
{
    return A*cos(W*t + Fi);
}
Вот результаты программы: При А_х=2, А_у=5 и разностью фаз=0 прямая под углом в 45".
Фигуры Лиссажу

При A_x=2, A_y=2 получается абсолютно аналогичная прямая
Фигуры Лиссажу

Посоветуйте, пожалуйста, на что обратить внимание, может кто-нибудь с подобным сталкивался?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
12.12.2015, 00:39
Ответы с готовыми решениями:

Вводить название фигуры, выводить формулу для вычисления площади этой фигуры
Вводить название фигуры (треугольник, квадрат, ромб, прямоугольник) выводить формулу для вычисления...

Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)
Нужно написать программу вычисления местонахождения точки относительно фигуры(лежит ли данная точка...

фигуры Лиссажу
Нужно решить задачу по метрологии, не представляю где и за что взяться. На пластине Х электронно...

Фигуры Лиссажу
Добрый день, подскажите пожалуйста как правильно сформировать массив для Фигуры Лиссажу? я пытаюсь...

1
0 / 0 / 0
Регистрация: 11.12.2015
Сообщений: 2
12.12.2015, 20:24  [ТС] 2
Очень-очень актуально
0
12.12.2015, 20:24
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
12.12.2015, 20:24
Помогаю со студенческими работами здесь

Фигуры Лиссажу
Добрый день. Плиз,помогите с задачкой... Добавлено через 3 минуты Задание 1. Используя...

Фигуры Лиссажу (осцелограф)
Подскажите пожалуйста как можно изменить разрешение хотяб на 640Х400(короче просто побольше) и...

Построение фигуры Лиссажу
Обращался за помощью в написании курсавика по ассемблеру(фигуры лиссажу)). Прекрасно помогли)...

Фигуры Лиссажу. Анимация
Добрый день друзья! Хочу попросить помощи в решении следующей задачи. Создать программу,...


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

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