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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Oksik-100
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 4
#1

Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ - C++

05.07.2015, 15:22. Просмотров 315. Ответов 3
Метки нет (Все метки)

помогите пожалуйста,никак не могу сообразить как заштриховать область ограниченную функцией y=arcctg(x) и прямой x=1 и осями ОХ и ОУ

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
const int X0 = 200, Y0 = 400; // начало координат
const float k = 80;                // масштаб          
const float xmin = -1.*X0/k, xmax = (800.-X0)/k;
const float ymin=-1.*(600-Y0)/k, ymax=Y0/k; 
float x1, x2;
 
 
//-----------------------------------------
// SCREENX – перевод X в координаты экрана
//-----------------------------------------
int ScreenX (float x) 
{ 
 return  X0+k*x; 
}
//-----------------------------------------
// SCREENY – перевод Y в координаты экрана
int ScreenY (float y) 
{ 
 return  Y0-k*y; 
} 
 
float f1 (float y)
{// Вход: x     
      return (cos(y))/(sin(y));
}// Выход: y = f(x) 
 
int ODZf1 ( float y )
{
    return (sin(y)!=0);
}
 
float f2 (float y)
{// Вход: x     
      return 1;
}// Выход: y = f(x)
 
 
 
void Axes() // построение и разметка осей координат
{
     int i, xe, j, ye;
     char s[10];
     line ( X0, 0, X0, 599 ); // рисуем оси
     line ( 0, Y0, 799, Y0 );
     moveto(X0, Y0);
     for ( i = 0; i <= (800-X0)/k; i ++ ) // цикл по всем делениям
     {
         xe = ScreenX ( i ); // переход к экранным координатам
         line ( xe, Y0-2, xe, Y0+2 ); // рисуем деление
         sprintf ( s, "%d", i ); // переводим число в строку
         outtextxy ( xe-8, Y0+4, s ); // вывод числа
     }
     for ( j = 1; j <= (800-Y0)/k; j ++ )
     {
         ye = ScreenY(j);
         line(X0-2, ye, X0+2, ye);
         sprintf ( s, "%d", j );
         outtextxy ( X0+4, ye-8, s );
     }
 
}
void Point ( float x, float y, int color ) // переводит переданные ей значения координат x и y из математической системы в экранную
{// если точка попадает на экран, выводит точку заданного цвета color
    int xe, ye;
    xe = ScreenX(x);
    ye = ScreenY(y);    
    if ( xe >= 0  &&  xe < 800  && ye >= 0  &&  ye < 600)
       putpixel(xe, ye, color);
    lineto (X0+k*x,Y0-k*y);
}
 
void Plotf1() // построение графиков
{
    
     float x, y,
     h =0.01;
     for (y=0;y<=M_PI; y+=h)
         if ( ODZf1(y) )
            Point ( f1(y),y, WHITE);
}
 
void Plotf2() // построение графиков
{
    
     float x, y,
     h =0.01;
     for (y=ymin;y<=ymax; y+=h)
       Point ( f2(y),y, WHITE);
}
 
//----------------------------------------------
// Solve находит точку пересечения на [a,b]
// Вход: a, b – границы интервала, a < b
// eps - точность решения
// Выход: x – решение уравнения f1(x)=f2(x)
//----------------------------------------------
float Solve( float a, float b, float eps )
{
      float c, fa, fc;
      while( fabs(b-a)> eps ) 
      { // пока не достигли заданной точности
           c = (a + b) / 2.; // середина отрезка [a,b]
           fa = f1(a) - f2(a); // разность функций в точке x=a
           fc = f1(c) - f2(c); // разность функций в точке x=c
           if ( fa*fc < 0 ) b = c; // сужаем область поиска
           else a = c;
      }
      return (a + b) / 2.; // результат – середина отрезка
}
 
 
void Cross ()
{
     float x2,y2;
     int xe, ye;
     char s[30];
     y2 = Solve(0, 2, 0.001); // найти x-координату точки
     x2 = f1(y2); // найти y-координату точки
     xe = ScreenX(y2); // вычислить экранные координаты
     ye = ScreenY(x2);
     sprintf(s, "x1:%5.2f", x2 ); // вывод координат на экран
     outtextxy(xe+55, ye-22, s);
     sprintf(s, "y1:%5.2f", y2 );
     outtextxy(xe+55, ye+2, s);
}
 
 
 
void Hatch()
{
 //штриховка
}
 
 
main ()
{   
    initwindow ( 800, 600 ); // создать окно для графики
 
    Axes();
    Plotf1();
    Plotf2();
    Plotf3();
    Cross();
    Hatch();
    getch(); // ждать нажатия на клавишу
    closegraph(); // закрыть окно для графики
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2015, 15:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ (C++):

Заштриховать область - Turbo Pascal
Все привет, вообще есть задание, есть график нескольких простых ф-ий, надо проверить на промежутке, входят ли эти точки в заштрихованную...

Заштриховать область разными стилями - Pascal ABC
Program ss; uses crt,graphABC; Const W=1025; Const H=768; Const a=-10; Const b= 10; var x0,y0:integer; //константы и...

Построить график и заштриховать область - PascalABC.NET
Добрый вечер. Помогите пожалуйста: нужно построить 2 графика и заштриховать нужные области. Я пробовал, максимум что смог, это построить...

Заштриховать область под графиком - MathCAD
Здравствуйте! Подскажите плз, можно ли заштризовать область под графиков, как показано на рисунке? Заранее спс!

Построить график функции и заштриховать область интегрирования - Pascal ABC
построить график y = sin (X) и заштриховать область интегрирования от 0 до п / 3 Пишите впредь по русски, не выеживайтесь.

Построить область, ограниченную линиями - Геометрия
Здравствуйте. Помогите пожалуйста решить. Построить область, ограниченную линиями, уравнения которых заданы в полярной системе координат....

3
MansMI
1350 / 1128 / 329
Регистрация: 08.01.2012
Сообщений: 4,321
05.07.2015, 15:34 #2
в graphics.h должно быть что вроде floodfill
0
Oksik-100
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 4
05.07.2015, 15:44  [ТС] #3
Цитата Сообщение от MansMI Посмотреть сообщение
в graphics.h должно быть что вроде floodfill
к сожалению мне нужна именно штриховка,а не заливка
0
MansMI
1350 / 1128 / 329
Регистрация: 08.01.2012
Сообщений: 4,321
05.07.2015, 15:56 #4
и что тип заливки штриховка отсутствует?

Добавлено через 9 минут
setfillstyle(SLASH_FILL,12);
0
05.07.2015, 15:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2015, 15:56
Привет! Вот еще темы с ответами:

Найти область ограниченную линиями - MathCAD
Задание в Mathcad: Найти область ограниченную линиями. Надо наверно построить 2 графика. Помогите правильно написать &quot;коды&quot; чтобы график...

Найти площадь фигуры, ограниченную линиями, заданными функцией у=х^2 и у=5+х/2 - Pascal ABC
Условие: найти приблизительную площадь фигуры, ограниченную линиями, заданными функцией у=х^2 и у=5+х/2, разбивая отрезок измерения x на 10...

Начертить круги Эйлера и заштриховать область изображающая множества представленные на картинке - Логика и множества
Доброе время суток. По заданию даны 3 множества A,B,C. Нужно начертить круги Эйлера и заштриховать область изображающая множества...

Постройте область, ограниченную заданными поверхностями - Геометрия
Добрый день! Нужна помощь, в построение области, ограниченной заданными поверхностями: x2+y2=4x z2=4-x x2+y2=4x - это окружность...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.