Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. IntList lstX;
  2. IntList lstY;
  3.  
  4. IntList lX;
  5. IntList lY;
  6.  
  7. color c;
  8. color new_value=#CCEACC;
  9. color limit_value=#7D4483;
  10.  
  11. int seed_X=14;
  12. int seed_Y=21;
  13. int maxY=0;
  14. int minY=32;
  15.  
  16. int h;
  17. int k=0;
  18. int lenj=0;
  19. int st=millis();
  20. int ee=1000;
  21. int ii=0;
  22. int l=0;
  23. public static int jj=0;
  24.  
  25. int currStep = 0;
  26. public static Stack[] y;
  27. int e=1000;
  28.  
  29. void setup()
  30. {
  31. size(1400, 700);
  32. }
  33.  
  34. static class Convert
  35. {
  36. static int ToPixelX(int x) //get in pixels from 0 to 31
  37. {
  38. return 180+x*20+10;
  39. }
  40. static int ToPixelY(int y)
  41. {
  42. return 20+y*20+10;
  43. }
  44. }
  45.  
  46.  
  47. class Pair
  48. {
  49. int x;
  50. int y;
  51. Pair()
  52. {
  53. x=y=0;
  54. }
  55. Pair(int xx, int yy)
  56. {
  57. x=xx;
  58. y=yy;
  59. }
  60. }
  61.  
  62. class Node
  63. {
  64. int pair;
  65. Node prev;
  66. Node()
  67. {
  68. pair=0;
  69. prev=null;
  70. }
  71.  
  72. Node(int p)
  73. {
  74. pair=p;
  75. }
  76. }
  77.  
  78. class Stack
  79. {
  80. Node head;
  81.  
  82. Stack()
  83. {
  84. head=null;
  85. }
  86.  
  87. public int Pop()
  88. {
  89. int temp=head.pair;
  90.  
  91. head=head.prev;
  92.  
  93. return temp;
  94. }
  95.  
  96. public void Push(int p)
  97. {
  98. Node temp=new Node(p);
  99. Node start=head;
  100. if (head==null)
  101. {
  102. head=temp;
  103. }
  104. else if (head.pair>p)
  105. {
  106. temp.prev=head;
  107. head=temp;
  108. }
  109. else
  110. {
  111. while (start.prev!=null && start.prev.pair<p )
  112. {
  113. start=start.prev;
  114. }
  115. Node elem=start.prev;
  116. start.prev=temp;
  117. temp.prev= elem;
  118. }
  119. }
  120.  
  121. public int Length()
  122. {
  123. int leng=0;
  124. Node temp=head;
  125. while(temp!=null)
  126. {
  127. leng++;
  128. temp=temp.prev;
  129. }
  130. return leng;
  131. }
  132.  
  133. public int Top()
  134. {
  135. return head.pair;
  136. }
  137.  
  138. public boolean IsEmpty()
  139. {
  140. if(head==null)
  141. return true;
  142. else
  143. return false;
  144. }
  145. }
  146.  
  147. public void DrawBackground()
  148. {
  149. rect(180, 20, 640, 640);
  150. for(int i=1;i<=32; i++)
  151. {
  152. line(180+20*i, 20, 180+20*i, 660);
  153. line(180, 20+20*i, 820, 20+20*i);
  154. }
  155.  
  156. for(int i=0;i<32;i++)
  157. {
  158. fill(0);
  159. textSize(15);
  160. text(i, 180+20*i, 18);
  161. text(i, 160, 35+20*i);
  162. noFill();
  163. }
  164. }
  165.  
  166. public void DrawPixel(int x, int y)
  167. {
  168. fill(c);
  169. rect(180+20*x, 20+20*y, 20, 20);
  170. noFill();
  171. }
  172.  
  173. public void drawStack(int i, Stack a)
  174. {
  175. jj=0;
  176. int temp1=0;
  177. int temp2=0;
  178. int lenj=a.Length()/2;
  179. while (jj<lenj)
  180. {
  181. temp1=a.Pop();
  182. temp2=a.Pop();
  183.  
  184. Paint(temp1,temp2,i+minY);
  185. jj++;
  186. }
  187.  
  188. if (a.Length()%2!=0)
  189. {
  190. Paint(temp2,a.Pop(),i+minY);
  191. }
  192. }
  193.  
  194. public void drawLine(int beginX, int beginY, int endX, int endY)
  195. {
  196. int leng;
  197. if (abs(endX-beginX)>abs(endY-beginY))
  198. {
  199. leng=abs(endX-beginX);
  200. }
  201. else
  202. {
  203. leng=abs(endY-beginY);
  204. }
  205. int check=0;
  206. double deltaX=((double)endX-beginX)/leng;
  207. double deltaY=((double)endY-beginY)/leng;
  208. double x=(beginX+0.5*deltaX);
  209. double y=(beginY+0.5*deltaY);
  210. int i=0;
  211. while (i<leng)
  212. {
  213. if (beginY==endY && check==0)
  214. {
  215. lX.append((int)beginX);
  216. lY.append((int)beginY);
  217. check++;
  218. }
  219. else if (check==0)
  220. {
  221. lX.append((int)x);
  222. lY.append((int)y);
  223. }
  224. if(y<minY)
  225. {
  226. minY=(int)y;
  227. }
  228. if(y>maxY)
  229. {
  230. maxY=(int)y;
  231. }
  232. DrawPixel((int)x,(int)y);
  233. x=x+deltaX;
  234. y=y+deltaY;
  235. i++;
  236. }
  237.  
  238. }
  239.  
  240. public void Paint(int beginX, int endX, int endY)
  241. {
  242. int beg=beginX;
  243. int end=endX;
  244. if(beginX>endX)
  245. {
  246. end=beginX;
  247. beg=endX;
  248. }
  249. for (int i=beg; i<=end; i++)
  250. {
  251. DrawPixel(i,endY);
  252. print(" (" + i, endY + ")");
  253. }
  254. }
  255.  
  256. public void gettt()
  257. {
  258. rect(180+20*2-20, 20+20*2-20, 10, 10);
  259. noFill();
  260. }
  261.  
  262.  
  263. void draw()
  264. {
  265. //background(140);
  266. lstX=new IntList();
  267. lstY=new IntList();
  268.  
  269. lX=new IntList();
  270. lY=new IntList();
  271. //for (int i=0; i<
  272.  
  273. DrawBackground();
  274. drawLine(4,4,4,26);
  275. drawLine(4,26,20,26);
  276. drawLine(20,26,28,18);
  277. drawLine(28,18,21,4);
  278. drawLine(21,4,21,8);
  279. drawLine(21,8,10,8);
  280. drawLine(10,8,10,4);
  281. drawLine(10,4,4,4);
  282.  
  283. drawLine(10,12,10,20);
  284. drawLine(10,20,17,20);
  285. drawLine(17,20,21,16);
  286. drawLine(21,16,21,12);
  287. drawLine(21,12,10,12);
  288.  
  289. Stack[] y=new Stack[maxY-minY+1];
  290. for (int i=0; i<=maxY-minY; i++)
  291. {
  292. y[i]=new Stack();
  293. }
  294.  
  295. for (int i=1; i<lY.size(); i++)
  296. {
  297. y[lY.get(i)-minY].Push(lX.get(i));
  298. }
  299. if (l==0)
  300. {
  301. for (int i=0; i<maxY-minY+1; i++)
  302. {
  303. print(i+minY + " ");
  304. while(!y[i].IsEmpty())
  305. {
  306. print(y[i].Pop() + " ");
  307. }
  308. }
  309. l++;
  310. }
  311.  
  312. if (keyPressed==true && ii<maxY-minY)
  313. {
  314. drawStack(ii, y[ii]);
  315. ii++;
  316. }
  317. //gettt();
  318. delay(100);
  319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement