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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2012, 17:23   #1
Rina20
 
Регистрация: 10.04.2012
Сообщений: 8
По умолчанию Линии уровня

Кто сталкивался с необходимостью их программирования.
желательно на с++... очень нужно!
Rina20 вне форума Ответить с цитированием
Старый 10.04.2012, 17:36   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Объясните пожалуйста свою задачу более подробно. Линия может быть горизонтальной, вертикальной. Строиться сразу или синхронно с графиком функции.
Что именно вам нужно?
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 10.04.2012, 17:52   #3
Rina20
 
Регистрация: 10.04.2012
Сообщений: 8
По умолчанию

Линии уровня (изолинии) на плоскости - точки, для которых функция принимает постоянные значения. Обычно семейство линий уровня строится для выбранного подходящим образом множества значений.
работаю над графическим решением методов оптимизации.
для этого нужно построить линии уровня
Изображения
Тип файла: jpg линии уровня.jpg (103.8 Кб, 174 просмотров)
Rina20 вне форума Ответить с цитированием
Старый 10.04.2012, 17:54   #4
Rina20
 
Регистрация: 10.04.2012
Сообщений: 8
По умолчанию

как мне объяснили уравнение нужно прировнять какой-то константе, а дальше в цикле добавлять какое-то число к этой константе..но не совсем понимаю, что определенно нужно
Строится должны сразу
Rina20 вне форума Ответить с цитированием
Старый 10.04.2012, 18:21   #5
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Так и приравнивайте вашу функцию к константе и рисуйте.
Допустим, F(x)=z^3-y^2. Приравниваем функцию к нулю и получаем y^2=z^3.
Если бы приравняли к 1, то получилось вы y^2+1=z^3.
Теперь подставляя значения в "у" и возводя их в квадрат, будем получать число, из которых нужно будет брать корень из 3. Так мы будем получать "z". Теперь остаётся по данным координатам (z,y) поставить точки на графике.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 10.04.2012 в 18:59.
Rin вне форума Ответить с цитированием
Старый 10.04.2012, 18:57   #6
Rina20
 
Регистрация: 10.04.2012
Сообщений: 8
По умолчанию

Можешь помочь с реализацией этой функции.. а то уже не доходит толком ничего...
еще и функция жутковатая.. 5*(x+y)*(x*y)/(x*x*y*y+1)+sqrt(x*x*y*y+1)
Rina20 вне форума Ответить с цитированием
Старый 10.04.2012, 19:17   #7
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Ух, нужно упростить выражение сначала.Вы уж простите, но сейчас ухожу, поэтому либо ночью, либо завтра утром отпишусь. Может кто поможет раньше меня упростить.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 10.04.2012, 19:30   #8
Rina20
 
Регистрация: 10.04.2012
Сообщений: 8
По умолчанию

уравнение можно заменить любым другим. это не принципиально=)
буду благодарна=)
Rina20 вне форума Ответить с цитированием
Старый 11.04.2012, 18:01   #9
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Помудрил, поискал и получилась вот такая вот штуковина-диковина.
Код:
#include "Math.hpp"
#include "math.h"
....................
void __fastcall TForm1::FormPaint(TObject *Sender)
{
 int  h_1=Form1->ClientHeight;
 int  w_1=Form1->ClientWidth;
        float zoom = 3.5;
	float w = 1/zoom;
	for (int i=0;i<w_1;i++)
	{
		for (int j=0;j<h_1;j++)
		{
		        float x = (w_1/2-i)/zoom;
			float y = (h_1/2-j)/zoom;
			int colour = SimpleRoundTo(5*(x+y)*(x*y)/(x*x*y*y+1)+sqrt(x*x*y*y+1));
		 	if (((x > -w) && (x < w)) ||
			 ((y > -w) && (y < w)))
			 {colour = 0xFFFFFF;}
                        if ((GetRValue(colour)>230)&&(GetRValue(colour)<255))
                         {colour=0;}
                        else
                        {colour=0xFFFFFF;}
			Form1->Canvas->Pixels[i][j]=colour;
		}
	}
}
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 11.04.2012 в 18:04.
Rin вне форума Ответить с цитированием
Старый 12.04.2012, 10:45   #10
Rina20
 
Регистрация: 10.04.2012
Сообщений: 8
По умолчанию

Спасибо огромное!!!!!
Rina20 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать из линии, толщиной в несколько пикселей, линии, толщиной 1 пиксель. ImmortalAlexSan Общие вопросы Delphi 12 25.10.2012 19:05
Драйвер уровня ядра Mr_ViK Помощь студентам 0 18.02.2012 18:16
Измерение уровня сигнала Gr@nd Мультимедиа в Delphi 8 01.07.2009 11:07
ЛИНИИ УРОВНЯ (ПАСКАЛЬ) mens-evgenij Помощь студентам 1 22.05.2009 09:50
Построение линий уровня(pascal) cherkasenok Помощь студентам 1 21.05.2009 13:55