Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Oksik-100
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 4
05.07.2015, 15:22     Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ #1
помогите пожалуйста,никак не могу сообразить как заштриховать область ограниченную функцией 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2015, 15:22     Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ
Посмотрите здесь:

Вычислить выражение y= arcctg(x) C++
C++ Разложение arcctg с ряд
Даны координаты точек х1, у1, ... х15, у15. Если точка попадает на плоскость, ограниченную кругом x2 + y2 = R2 - вывести ее координаты C++
C++ По заданным координатам центра окружности и ее радиусу определить координаты точек пересечения окружности с осями координат.
Вычислить приближенно площадь фигуры, ограниченной функцией y=x^2 и прямой y=5 x/2, разбивая изменения x на 100 частей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MansMI
1046 / 843 / 205
Регистрация: 08.01.2012
Сообщений: 3,021
05.07.2015, 15:34     Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ #2
в graphics.h должно быть что вроде floodfill
Oksik-100
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 4
05.07.2015, 15:44  [ТС]     Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ #3
Цитата Сообщение от MansMI Посмотреть сообщение
в graphics.h должно быть что вроде floodfill
к сожалению мне нужна именно штриховка,а не заливка
MansMI
1046 / 843 / 205
Регистрация: 08.01.2012
Сообщений: 3,021
05.07.2015, 15:56     Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ #4
и что тип заливки штриховка отсутствует?

Добавлено через 9 минут
setfillstyle(SLASH_FILL,12);
Yandex
Объявления
05.07.2015, 15:56     Заштриховать область ограниченную функцией y=arcctg(x), прямой x=1 и осями ОХ и ОУ
Ответ Создать тему
Опции темы

Текущее время: 14:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru