Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Функция Line::arrowhead().

Posted on 30 марта, 201330 марта, 2013 by admin

Предоставьте функцию Line::arrowhead() добавляющую стрелку к концу линии. У линии два конца и стрелки могут указывать оба направления вдоль линии, так что аргументы функции arrowhead() должны уметь задавать по крайней мере четыре альтернативы.

Да опять практически мы ее не сможем сделать, но хоть попробуем теоретически. Я  в прошлом посте писал почему нельзя это сделать в прошлом посте. http://www.kselax.ru/2013/03/tolshhina-linij-dlya-klassa-shape/ . Ну ок сейчас мы хоть попробуем сделать допустим вывести линию и в место стрелки в конце втулить допустим цифру 8 либо в начало. Как бы моделирование. Ок пошол решать пытаться херней страдать.

Примерно как бы сделал классы Window.h, Point.h, Shape.h вы можете найти по ссылке : http://www.kselax.ru/2013/03/tolshhina-linij-dlya-klassa-shape/

файл Line.h:

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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
//ob69vlenie klacca Line
#ifndef LINE_H
#define LINE_H
#include <cstdlib>
using std::exit;
 
#include "Shape.h"
#include "Point.h"
 
class Line : public Shape
{
Point* a;
Point* b;
int kon;
public:
//konctryktor
//inicializaci9 camogo shape 9 tochek po diagonali
Line(Point c, Point d)
:Shape(c,d),kon(1)
{
a=new Point;
a=&c;
b=new Point;
b=&d;
}
void arrowhead(int a)
{
kon=a;
}
void draw(Window* w)
{
if(solid=="solid")
{
cout <<"drow Line"<<endl;
//cout <<a->mass[2][3]<<endl;
int x=a->x;
int y=a->y;
int x1=b->x;
int y1=b->y;
cout <<"x= "<<x<<" y= "<<y<<" x1= "<<x1<<" y1= "<<y1<<endl;
int x2;
int y2;
//cout <<"tol= "<<tol<<endl;exit(1);
 
if(x<x1&&y<y1) //0,0 10,10
{
x2=x1-1;
y2=x1-1;
w->mass[x][y]=1;
w->mass[x1][y1]=1;
//naxodim tochki pr9moi
 
while(x2>x&&y2>y)
{
w->mass[x2][y2]=1;
x2=x2-1;
y2=y2-1;
//cout <<x2<<' '<<y2<<endl;
}
}
if(x<x1&&y>y1)//0,20 10,10
{
x2=x+1;
y2=y-1;
w->mass[x][y]=1;
w->mass[x1][y1]=1;
//naxodim tochki pr9moi
// cout <<x2<<' '<<y2<<endl;
while(x2<x1&&y2>y1)
{
w->mass[x2][y2]=1;
x2=x2+1;
y2=y2-1;
//cout <<x2<<' '<<y2<<endl;
}
}
if(x==x1&&y<y1)//0,0 0,10
{
//cout <<"mu tyt"<<endl;exit(1);
x2=x+1;
y2=y;
if(kon==2)
w->mass[x][y]=8;
else
w->mass[x][y]=1;
//mass[x1][y1]=1;
//naxodim tochki pr9moi
cout <<x2<<' '<<y2<<endl;
while(y1>x2)
{
w->mass[x2][y2]=1;
x2=x2+1;
y2=y2;
//cout <<x2<<' '<<y2<<endl;
}
}
if(y==y1&&x<x1)//0,0 10,0
{
cout <<"mu tyt"<<endl;
x2=x+1;
y2=y;
w->mass[y][x]=8;
//mass[x1][y1]=1;
//naxodim tochki pr9moi
cout <<x2<<' '<<y2<<endl;
//exit(1);
while(x1>x2)
{
w->mass[y][x2]=1;
x2=x2+1;
y2=y2;
//cout <<x2<<' '<<y2<<endl;
}
}
if(tol==3)
{
cout <<"tol= "<<tol<<endl;
cout <<"drow Line"<<endl;
//cout <<a->mass[2][3]<<endl;
int x=a->x;
int y=a->y+1;
int x1=b->x;
int y1=b->y+1;
cout <<"x= "<<x<<" y= "<<y<<" x1= "<<x1<<" y1= "<<y1<<endl;
int x2;
int y2;
//cout <<"tol= "<<tol<<endl;exit(1);
 
if(x<x1&&y<y1) //0,0 10,10
{
x2=x1-1;
y2=x1-1;
w->mass[x][y]=1;
w->mass[x1][y1]=1;
//naxodim tochki pr9moi
 
while(x2>x&&y2>y)
{
w->mass[x2][y2]=1;
x2=x2-1;
y2=y2-1;
//cout <<x2<<' '<<y2<<endl;
}
}
if(x<x1&&y>y1)//0,20 10,10
{
x2=x+1;
y2=y-1;
w->mass[x][y]=1;
w->mass[x1][y1]=1;
//naxodim tochki pr9moi
// cout <<x2<<' '<<y2<<endl;
while(x2<x1&&y2>y1)
{
w->mass[x2][y2]=1;
x2=x2+1;
y2=y2-1;
//cout <<x2<<' '<<y2<<endl;
}
}
if(x==x1&&y<y1)//0,0 0,10
{
//cout <<"mu tyt"<<endl;
x2=x+1;
y2=y;
w->mass[x][y]=1;
//mass[x1][y1]=1;
//naxodim tochki pr9moi
cout <<x2<<' '<<y2<<endl;
while(y1>x2)
{
w->mass[x2][y2]=1;
x2=x2+1;
y2=y2;
//cout <<x2<<' '<<y2<<endl;
}
}
if(y==y1&&x<x1)//0,0 10,0
{
cout <<"mu tyt"<<endl;
x2=x+1;
y2=y;
w->mass[y][x]=8;
//mass[x1][y1]=1;
//naxodim tochki pr9moi
cout <<x2<<' '<<y2<<endl;
//exit(1);
while(x1>x2)
{
w->mass[y][x2]=1;
x2=x2+1;
y2=y2;
//cout <<x2<<' '<<y2<<endl;
}
}
//exit(1);
}
//yctanovka v se tekychix koordinat
w->current(se);
//exit(1);
}
else if(solid=="dotted")
{
cout <<"dotted"<<endl;
exit(1);
}
else if(solid=="dashed")
{
cout <<"dashed"<<endl;
exit(1);
}
}
};
 
#endif

файл main.cpp:

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
//Ricyem domik i dva okna
#include <iostream>
using std::cout;
using std::endl;
 
#include "Point.h"
#include "Window.h"
#include "Shape.h"
#include "Line.h"
 
int main()
{
Window w(60,30);
Point p1(0,10);
Point p2(0,20);
Line L(p1,p2);
L.arrowhead(2);
//L.thickness(3);
//L.outline("dashed"); //octanovitc9 i vuvedet dashed.
w.draw(L);
w.print();
return 0;
}

Вообщем  добавил я функцию Line::arrowhead() которая меняет значение int kon. Line::kon по умолчанию равен 1 тоесть без стрелок, если 2 — то стрелка одна в начале скажем так, если 3, то стрелка в конце, если 4 то обе стрелки, соответственно проверяем Line::kon в Line::draw(). Я ток одну проверку сделал, лиш токо так показать как она делается. Просто ничо нормально не реализовано, а если нормально все реализовывать, то вы сами понимаете очень много времени уйдет мб даже месяц, если не больше, поэтому так наскоком решаем. Го следующую.

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant