Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2022, 13:37   #1
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию График функции.

Здравствуйте! Помогите, пожалуйста, с прорисовкой вот таких функций, не могу понять в первую очередь параметры этих функций:
Func.png

Нет диапазона на что ориентироваться, как, по вашему мнению, нужно подойти к решению данной задачи? На данный момент кода нет, увы.

k - я, думаю, что это некая константа..., коэффициент
a - не угол же, правильно?
t - Без понятия, может быть, угол...
n - Без понятия...
apofioz вне форума Ответить с цитированием
Старый 18.11.2022, 13:46   #2
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

Значение аргументов должно быть описано там же откуда это задание.
Без них это звучит примерно так, "нарисуйте графики функций".
Valick вне форума Ответить с цитированием
Старый 18.11.2022, 14:36   #3
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
Значение аргументов должно быть описано там же откуда это задание.
Я специально не стал переписывать формулы, а сделал скриншот, что бы сомнения отпали. Это текст всего задания далее идёт другое задание.
apofioz вне форума Ответить с цитированием
Старый 18.11.2022, 14:43   #4
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

Дайте ссылку на ту "методичку" откуда вы сделали скриншот этого задания.
Valick вне форума Ответить с цитированием
Старый 18.11.2022, 14:48   #5
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Р.М.Ганеев. Проектирование интерфейса пользователя средствами WIN32 API, Глава 3, задание 22.
apofioz вне форума Ответить с цитированием
Старый 18.11.2022, 16:14   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

a, k, n - коэффициенты, t - время
p51x вне форума Ответить с цитированием
Старый 18.11.2022, 17:05   #7
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

p51x, пытаюсь это найти в учебнике и не могу(
Valick вне форума Ответить с цитированием
Старый 19.11.2022, 05:32   #8
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
a, k, n - коэффициенты, t - время
И, что это значит, какие пределы, как это реализовать?
apofioz вне форума Ответить с цитированием
Старый 19.11.2022, 08:32   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Вы алгебру в школе прогуливали? Можно на форме дать возможность задать, можно самому некоторые задать.

Цитата:
Сообщение от apofioz Посмотреть сообщение
что это значит, какие пределы
a - просто коэффициент, который влияет на амплитуду. Вы же можете представить графики sin x, 2sinx, 3sin x, ... ?
k - задает "частоту горбов"
n - будет влиять на влиять на амплитуду и задавать в какой стороне будут горбы, а в какой график прижмется к 0

По сути параметры влияют на "масштаб", а форма графика будут примерно одинаковая.

Последний раз редактировалось p51x; 19.11.2022 в 08:34.
p51x вне форума Ответить с цитированием
Старый 19.11.2022, 09:10   #10
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы алгебру в школе прогуливали?
Скорее так, уже давно ничего не помню. Синус косинус двойного угла, тройного угла и.т.д, но зачем столько переменных для этого они просто сбивают с толку. Как можно увидеть не один я не понял данного задания и параметров функций, так что не надо.

t -Время, в каком смысле, время?

Короче говоря , сделал так, но как-то не уверен
Код:
struct FUNC
{
	TCHAR szFuncName[48];
	double x[VALUESSIZE];
	double y[VALUESSIZE];
};


/*Функция вычесляет значения для заднной функции???
a = [1; 30]
k = 1
t = 0 .... 100, 200
n = -0,0001*/
void Calcualte(FUNC& func, int iMin, int iMax,
	double (*f)(double), int a = 1,
	int k = 1, double n = -0.001)
{
double PI = M_PI / 10.0;

for (int i = iMin; i < iMax; ++i)
{
	func.x[i] = static_cast<double>(PI * i);
	func.y[i] = static_cast<double>(2 * a * f(k * func.x[i]) *
		exp(n * func.x[i]));
}

}

void Curve(HDC hdc, const SIZE& cbWnd, const FUNC& f,
	const COLORREF crPen = RGB(0, 0, 0))
{
	int left = cbWnd.cx / 10,
		right = cbWnd.cx - left,
		top = cbWnd.cy / 10,
		bottom = cbWnd.cy - top,
		cxHalf = (cbWnd.cx >> 1),
		cyHalf = (cbWnd.cy >> 1),
		amp = cyHalf - top;
	double dMin = 0.0, dMax = 0.0;

	double curr = 0.0;
	for (int i = 0; i < 100; ++i)
	{
		curr = f.y[i];
		if (dMin > curr)
			dMin = curr;
		else if (dMax < curr)
			dMax = curr;
	}
	if (dMax < abs(dMin))
		dMax = abs(dMin);
	int dy = static_cast<int>(amp / dMax);
	int dx = static_cast<int>((right - left) / ((f.x[VALUESSIZE - 1] - f.x[0])));

	HPEN hPen = CreatePen(PS_SOLID, 1, crPen);
	HPEN hOldPen = (HPEN)SelectObject(hdc, hPen);

	MoveToEx(hdc, left, cyHalf - static_cast<int>(dy * f.y[0]), NULL);
	TextOut(hdc, left, cyHalf - static_cast<int>(dy * f.y[0]) - 16,
		f.szFuncName, _tcslen(f.szFuncName));
	for (int i = 0; i < 100; ++i)
	{
		int xcurr = static_cast<int>(dx * (f.x[i] - f.x[0]) + left);
		int ycurr = static_cast<int>(cyHalf - dy * f.y[i]);
		LineTo(hdc, xcurr, ycurr);
	}
	SelectObject(hdc, hOldPen);
	DeleteObject(hPen);
}

BOOL DrawAxis(HDC hdc, const SIZE& cbWnd, int weight, COLORREF crPen = RGB(0, 0, 0))
{
	HPEN hPen = CreatePen(PS_SOLID, weight, crPen);
	HPEN hOldPen = (HPEN)SelectObject(hdc, hPen);

	int left = 10;
	int top = 10;
	int right = cbWnd.cx - left;
	int bottom = cbWnd.cy - top;
	int cxHalf = (cbWnd.cx >> 1);
	int cyHalf = (cbWnd.cy >> 1);

	TEXTMETRIC tm;
	
	if(!SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT)))
		return FALSE;

	if(!GetTextMetrics(hdc, &tm))
		return FALSE;

	int cxChar = 3 * ((tm.tmAveCharWidth + 1) >> 1);
	int cyChar = 3 * (tm.tmHeight >> 1);

	MoveToEx(hdc, left, cyHalf, NULL);
	LineTo(hdc, right, cyHalf);
	MoveToEx(hdc, cxHalf, top, NULL);
	LineTo(hdc, cxHalf, bottom);

	TextOut(hdc, cxHalf - cxChar, top, TEXT("Y"), 1);
	TextOut(hdc, right - cxChar, cyHalf + (cyChar >> 1), TEXT("X"), 1);
	TextOut(hdc, cxHalf - cxChar, cyHalf + (cyChar >> 1), TEXT("0"), 1);

	SelectObject(hdc, hOldPen);
	DeleteObject(hPen);

	return TRUE;
}

Последний раз редактировалось apofioz; 19.11.2022 в 09:23.
apofioz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для функции Y = f(X) , график которой приведен в Вашем индивидуальном задании , вывести на экран значения Y для Х = 0 , 0.25 , 0.5 , ... 19.75 . Получить на экране график функции текстового Lovskiy Помощь студентам 9 20.01.2022 14:22
Построить график функции y=x^2. График строится из отрезков и алгоритма Брезенхема Robert_ Помощь студентам 0 20.02.2017 22:37
Затабулировать функцию. график указанной функции и график касательной к ней в точке с абсциссой AntonKalinin01 Помощь студентам 0 26.05.2013 07:18
Bывести на экран монитора и напечатать таблицу значений аргумента и функции, а также график функции средствами Exel IgorMyakota Помощь студентам 1 24.11.2012 02:46
Построить график функции F(x) на заданном интервале с заданным шагом и вывести значения х и функции F(x) в таблицу в графическом р Proskurina Паскаль, Turbo Pascal, PascalABC.NET 8 12.11.2012 21:57