Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72

Почему SetPixel по оси OY не работает

30.07.2013, 22:29. Показов 1858. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток) При открытии модального окна должен вырисовываться график(представлен на рисунке), а рисуется только прямая, такое чувство, что SetPixel игнорирует координаты по оси OY. Конечно, SetPixel работает отлично, я ошибку сделал. Посмотрите, пожалуйста, может я массив не так задаю с координатами по оси OY
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int y=-1;     //  задаем начальный интервал, так как нам нужно построить функцию на интервале [-1,1]
    int h=0;       // задаем начальное значение шага
    int w[200];    // выделяем место в памяти для 200 значений
    for(int x=0; x<200; x++)     // через цикл заполняем 200 значений массива нашей функцией
    {
        w[x]=ceil(asin(y+h)-sin(2*(y+h)));             // наша функция , которая существует на интервале [-1,1]
        h=h+0.01;
    }
    
 
     for(int i=0; i<200; i++)         // задаем цикл для вырисовки графика
     {
        dc.SetPixel(500-i,350-w[i],RGB(255,0,0));      //Выставляем точки по новым координатам
     }
Миниатюры
Почему SetPixel по оси OY не работает  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2013, 22:29
Ответы с готовыми решениями:

Почему так медленно работает SetPixel?
Видел похожие темы но ответа не нашел. Не могу понять почему так медленно работает Setpixel. Внеэкранный буфер помогает но не так как...

Почему в точках, лежащих на оси кольца, вектор магнитной индукции направлен вдоль оси?
почему в точках, лежащих на оси кольца, вектор магнитной индукции направлен вдоль оси?

Почему при загрузки оси мне на выбор предлагается 3 оси, хотя она у меня одна?
Друзья! То есть когда я загружаю ось, то появляется чёрный экран и надпись типа: выберите систему для загрузки. Windows Home Edition ...

9
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
31.07.2013, 09:39
Добавлено через 1 минуту
ибо если учитывать, что массив w целочисленный и
существует на интервале [-1,1]
то получается, в массиве могут лежать только три значения - -1,0,1

Добавлено через 50 секунд
соответственно 350-w[i] даст три значения:
351,350,349
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
31.07.2013, 10:42  [ТС]
Croessmah, Блин, точно. Спасибо большое за ответ. А что мне тогда делать, если функция на интервале [-1,1], как мне работать с такими маленькими значениями? Подскажите, пожалуйста
0
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
31.07.2013, 19:05
Цитата Сообщение от MaximRTS Посмотреть сообщение
как мне работать с такими маленькими значениями?
Множитель подобрать, чтобы раскидать значения
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
31.07.2013, 20:12  [ТС]
Croessmah, А я домнажать буду саму функцию на этот множитель? Извиняюсь, но можно подробнее.
0
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
31.07.2013, 21:31
Это - asin(y+h)-sin(2*(y+h))
Можете весь проект скинуть - посмотрю пока время есть


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
void Graph::OnShowWindow(BOOL bShow, UINT nStatus) 
{
CDialog::OnShowWindow(bShow, nStatus);
 
 
    ShowWindow(SW_MAXIMIZE);
    extern WINUSERAPI HDC WINAPI GetWindowDC(IN HWND hWnd);
    HDC hDC = GetWindowDC(m_hWnd);
    if(hDC)
         {
             CMyPaintDC dc(this);
    //координаты центра
    int CenterX = 600 ;
    int CenterY = 500 ;
    //Размер осей
    int WidthX = 400 ;
    int WidthY = 400 ;
    //Сдвиг текста
    int textShift = 15 ;
    //Масштаб
    double GraphScale = 200.0 ;
    dc.TextOut ( CenterX + textShift , CenterY-WidthY , "f(x)" ) ;  // надпись на оси ОY
    dc.TextOut ( CenterX + WidthX , CenterY + textShift , "x" ) ;   // надпись на оси ОХ
    dc.TextOut ( CenterX - textShift, CenterY + textShift , "(0,0)" ) ; // надпись на оси ОХ
    dc.MoveTo ( CenterX-WidthX , CenterY ); // Начать рисовать линию
    dc.LineTo ( CenterX+WidthX , CenterY ); // И продолжить рисовать линию
    dc.MoveTo ( CenterX , CenterY-WidthY ); // Начать рисовать линию
    dc.LineTo ( CenterX , CenterY+WidthY ); // И продолжить рисовать линию
    
    CPen MyPen(PS_SOLID,1,RGB(255,0,0));    // настраиваем перо
    dc.SelectObject(MyPen); 
    
 
    double startValue = -1.0 ;
    double endValue = 1.0 ;
    double stepValue = 0.01 ;
 
    dc.MoveTo( CenterX+startValue *GraphScale , CenterY+(asin(startValue)-sin(2.0*(startValue)))*GraphScale );
    for( double h=startValue;h<=endValue;h+=stepValue)
        dc.LineTo ( CenterX+h*GraphScale,CenterY+(asin(h)-sin(2.0*(h)))*GraphScale);
    }
 
 
    UpdateData(false);
}
И не используйте магические числа - в них разбираться дольше, чем в остальном коде

Не знаю правильный ли график:
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
31.07.2013, 21:45  [ТС]
Croessmah, Спасибо, Вам огоромное. А как его перевернуть, а то он вверх ногами?

Добавлено через 6 минут
Croessmah, Еще хотел спросить, как понять магические числа?
0
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
31.07.2013, 21:46
Можно так:
C++
1
2
3
4
    dc.MoveTo( CenterX+startValue*GraphScale , CenterY-(asin(startValue)-sin(2.0*(startValue)))*GraphScale );
    for( double h=startValue;h<=endValue;h+=stepValue)
        dc.LineTo ( CenterX+h*GraphScale,CenterY-(asin(h)-sin(2.0*(h)))*GraphScale);
    }
Добавлено через 1 минуту
Цитата Сообщение от MaximRTS Посмотреть сообщение
Еще хотел спросить, как понять магические числа?
все вот эти 700, 500, 300, 400, 40, 25, которые были у Вас по всей функции разбросаны - даже не понятно какие к чему и куда...
Магическое число (программирование)
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
31.07.2013, 21:51  [ТС]
Croessmah, А ясно, буду учится. Спасибо Вам! Еслиб не Ваша помощь я не знаю сколько времени я бы просидел с этой задачей.) А кто такой Крейг Зенури?
0
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
31.07.2013, 22:06
Craig Zerouni
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2013, 22:06
Помогаю со студенческими работами здесь

Не работает SetPixel в цикле
case WM_PAINT: { hDC = BeginPaint(hWnd, &amp;ps); SetBkMode(hDC, TRANSPARENT); GetClientRect(hWnd, &amp;rect); DrawText(hDC,...

Не работает: COLORREF c; BYTE r,g,b; c=GetPixel(i,j); r=GetRValue(c); g=... b=.... ..... c=RGB(r,g,b); SetPixel(i,j,c);
у меня не получается посмотри: ...... COLORREF c; BYTE r,g,b; c=GetPixel(i,j); r=GetRValue(c); g=... b=.... ..... ...

Найти способ решения проблемы - функция setPixel() работает очень медленно (SFML)
В sfml функция setPixel() работает очень медленно, можно-ли попиксельно редактировать изображение другим способом?

Почему оси TChart не меняют значений?
Все гуглопоиски ведут на киберфорум)) Здравствуйте! Даже на буржуйских не смог найти решения- почему мои оси не меняют значений? Может...

Почему span сдвигается влево по главной оси?
В body стоит justify-content: center; ,а в header justify-content: flex-end; &lt;header&gt;&lt;img alt=&quot;main-img&quot; src=&quot;img/main-img.jpg&quot;&gt; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru