grnWatch.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Часы</title>
  5. <style>
  6. body {
  7. background-image: url(grnWatch.png);
  8. background-size: cover;
  9. background-position: center;
  10. height: 100vh;
  11. margin: 0;
  12. display: flex;
  13. justify-content: center;
  14. align-items: center;
  15. }
  16. #signs, #alarm {
  17. position: absolute;
  18. top: 50%;
  19. left: 50%;
  20. transform: translate(-34%, -53%) scale(0.88); /* Смещение по ширине и высоте / масштабирование на 80% */
  21. width: 616px; /* Фиксируем ширину */
  22. height: 616px; /* Фиксируем высоту */
  23. }
  24. </style>
  25. <script>
  26. // --------------------------------- Скрипт канваса со знаками -----------------------------------------------
  27. function signs()
  28. {
  29. var canvas = document.getElementById('signs'); // получаем объект канваса
  30. var ctx = canvas.getContext('2d'); // у него есть свойство - контекст рисования
  31. var width=canvas.width,height=canvas.height; //Размеры "холста" это нужно, чтобы круги выстраивались
  32. // --- установим стили рисунка -----------------------------------------------------------------------
  33. ctx.shadowColor = "Coral"; // Цвет тени
  34. ctx.shadowOffsetX = 5;
  35. ctx.shadowOffsetY = 5;
  36. ctx.shadowBlur = 5;
  37. ctx.strokeStyle = 'DarkCyan'; // Цвет линии
  38. ctx.fillStyle = "Teal"; // Цвет заполненной плоскости
  39. // Удачный вариант круга по центру 198 - - - - - - - - -
  40. const X = canvas.width / 2; const Y = canvas.height / 2;
  41. //const radius = 198;
  42. ctx.lineWidth = 1; // установим толщину линии:
  43. // --- Круг 198 --------------------------
  44. ctx.beginPath();
  45. ctx.arc(X, Y, 198, 0, 2 * Math.PI, false);
  46. ctx.stroke();
  47. // --- Круг 208 --------------------------
  48. ctx.beginPath();
  49. ctx.arc(X, Y, 208, 0, 2 * Math.PI, false);
  50. ctx.stroke();
  51. //---- Круг 233 --------------------------
  52. ctx.beginPath();
  53. ctx.arc(X, Y, 233, 0, 2 * Math.PI, false);
  54. ctx.stroke();
  55. //---- Круг 303 --------------------------
  56. ctx.beginPath();
  57. ctx.arc(X, Y, 303, 0, 2 * Math.PI, false);
  58. ctx.stroke();
  59. //Рисует 12 кружков, соответствующих часам
  60. for(var i=0;i<=Math.PI*2;i+=Math.PI*2/12) //Math.PI*2 - полный круг часов,Math.PI*2/12 - это 1/12 полного круга часов
  61. {
  62. ctx.beginPath();
  63. ctx.arc(width/2+220*Math.cos(i), // 2 center полного круга кружков,220 shirina полного круга кружков
  64. height/2+220*Math.sin(i), // 2 center полного круга кружков,220 visota полного круга кружков
  65. 13,0,2*Math.PI); //13 radius кружков,0 uglovoe sehenie кружков,2 vopros
  66. ctx.fill();
  67. ctx.closePath();
  68. }
  69. //Рисует 30 кружков, соответствующих часам
  70. for(var i=0;i<=Math.PI*2;i+=Math.PI*2/60) //Math.PI*2 - полный круг часов,Math.PI*2/12 - это 1/12 полного круга часов
  71. {
  72. ctx.beginPath();
  73. ctx.arc(width/2+203*Math.cos(i), //2 center полного круга кружков,220 shirina полного круга кружков
  74. height/2+203*Math.sin(i), //2 center полного круга кружков,220 visota полного круга кружков
  75. 5,0,2*Math.PI); //13 radius кружков,0 uglovoe sehenie кружков,2 vopros
  76. ctx.fill();
  77. ctx.closePath();
  78. }
  79. // --- Рисует 12 кругов для символов ---
  80. for(var i=0;i<=Math.PI*2;i+=Math.PI*2/12) //Math.PI*2 - полный круг часов,Math.PI*2/12 - это 1/12 полного круга часов
  81. {
  82. ctx.beginPath();
  83. ctx.arc(width/2+268*Math.cos(i), // 2 center полного круга кружков,220 shirina полного круга кружков
  84. height/2+268*Math.sin(i), // 2 center полного круга кружков,220 visota полного круга кружков
  85. 34,0,2*Math.PI); //13 radius кружков,0 uglovoe sehenie кружков,2 vopros
  86. ctx.stroke();
  87. ctx.closePath();
  88. }
  89. //-----------------------------------------------------------------------------------------------------------------------------------------------
  90. // Получаем центр канваса
  91. var centerX = canvas.width / 2;
  92. var centerY = canvas.height / 2;
  93. // --- 1 --- Вертикальная линия двойка ----------------------------------------------------------------------------------------------------------
  94. // Определяем смещение и масштабирование для пропорций
  95. var xOffset = 441 - centerX; // Смещение по X относительно центра
  96. var yOffset = 42 - centerY; // Смещение по Y относительно центра
  97. var scaleX = 1; // Масштабирование по X (1 - без изменений)
  98. var scaleY = 1; // Масштабирование по Y (1 - без изменений)
  99. // Новые координаты точек с учетом центра и пропорций
  100. var startX = centerX + xOffset * scaleX;
  101. var startY = centerY + yOffset * scaleY;
  102. var endX = centerX + xOffset * scaleX;
  103. var endY = centerY - 230 * scaleY; // Предполагаем, что это правильная высота
  104. // Рисуем линию
  105. ctx.beginPath();
  106. ctx.moveTo(startX, startY);
  107. ctx.lineTo(endX, endY);
  108. ctx.closePath();
  109. ctx.stroke();
  110. // --- 2 --- Вертикальная линия единица ---------------------------------------------------------------------------------------------------------
  111. // Определяем смещение и масштабирование для пропорций
  112. var xOffset = 540 - centerX; // Смещение по X относительно центра
  113. var yOffset = 208 - centerY; // Смещение по Y относительно центра
  114. var scaleX = 1; // Масштабирование по X (1 - без изменений)
  115. var scaleY = 1; // Масштабирование по Y (1 - без изменений)
  116. // Новые координаты точек с учетом центра и пропорций
  117. var startX = centerX + xOffset * scaleX;
  118. var startY = centerY + yOffset * scaleY;
  119. var endX = centerX + xOffset * scaleX;
  120. var endY = centerY - 167 * scaleY; // Предполагаем, что это правильная высота
  121. // Рисуем линию
  122. ctx.beginPath();
  123. ctx.moveTo(startX, startY);
  124. ctx.lineTo(endX, endY);
  125. ctx.closePath();
  126. ctx.stroke();
  127. // --- 3 --- Треугольник ------------------------------------------------------------------------------------------------------------------------
  128. for (var i = 0; i < 3; i++) {
  129. // var center_x = centerX + 232;
  130. // var center_y = centerY - 133;
  131. var center_x = centerX + 269;
  132. var center_y = centerY;
  133. var radius = 34;
  134. var angle = -i * 120 * Math.PI / 180 + Math.PI / 2;
  135. var x1 = center_x + radius * Math.cos(angle);
  136. var y1 = center_y - radius * Math.sin(angle);
  137. var next_i = (i + 1) % 3;
  138. var next_angle = -next_i * 120 * Math.PI / 180 + Math.PI / 2;
  139. var x2 = center_x + radius * Math.cos(next_angle);
  140. var y2 = center_y - radius * Math.sin(next_angle);
  141. ctx.beginPath();
  142. ctx.moveTo(x1, y1);
  143. ctx.lineTo(x2, y2);
  144. ctx.stroke();
  145. ctx.closePath();}
  146. // --- 4 --- Kвадрат ----------------------------------------------------------------------------------------------------------------------------
  147. for (var i = 0; i < 4; i++) {
  148. var center_x = centerX + 232;
  149. var center_y = centerY + 134;
  150. var radius = 34;
  151. var angle = -i * 90 * Math.PI / 180 + Math.PI / 4;
  152. var x1 = center_x + radius * Math.cos(angle);
  153. var y1 = center_y - radius * Math.sin(angle);
  154. var next_i = (i + 1) % 4;
  155. var next_angle = -next_i * 90 * Math.PI / 180 + Math.PI / 4;
  156. var x2 = center_x + radius * Math.cos(next_angle);
  157. var y2 = center_y - radius * Math.sin(next_angle);
  158. ctx.beginPath();
  159. ctx.moveTo(x1, y1);
  160. ctx.lineTo(x2, y2);
  161. ctx.stroke();
  162. ctx.closePath();}
  163. // --- 5 --- Пятиконечная звезда ----------------------------------------------------------------------------------------------------------------
  164. for (var i = 0; i < 5; i++) {
  165. var center_x = centerX + 134;
  166. var center_y = centerY + 233;
  167. var radius = 34;
  168. var angle = -i * 144 * Math.PI / 180 + Math.PI / 2;
  169. var x1 = center_x + radius * Math.cos(angle);
  170. var y1 = center_y - radius * Math.sin(angle);
  171. var next_i = (i + 1) % 5;
  172. var next_angle = -next_i * 144 * Math.PI / 180 + Math.PI / 2;
  173. var x2 = center_x + radius * Math.cos(next_angle);
  174. var y2 = center_y - radius * Math.sin(next_angle);
  175. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  176. // --- Рисование линии 6-й час --- Шестиконечная звезда мозаика ----------------------------------------------------
  177. // Рисование линии 6-й час (часть 1)
  178. for (var i = 0; i < 3; i++) {
  179. var center_x = centerX;
  180. var center_y = centerY + 268;
  181. var radius = 34;
  182. var angle = -i * 120 * Math.PI / 180 + Math.PI / 2;
  183. var x1 = center_x + radius * Math.cos(angle);
  184. var y1 = center_y - radius * Math.sin(angle);
  185. var next_i = (i + 1) % 3;
  186. var next_angle = -next_i * 120 * Math.PI / 180 + Math.PI / 2;
  187. var x2 = center_x + radius * Math.cos(next_angle);
  188. var y2 = center_y - radius * Math.sin(next_angle);
  189. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.lineWidth = 1;ctx.stroke();ctx.closePath();}
  190. // Рисование линии 6-й час (часть 2)
  191. for (var i = 0; i < 3; i++) {
  192. var center_x = centerX;
  193. var center_y = centerY + 268;
  194. var radius = 34;
  195. var angle = -i * 120 * Math.PI / 180 + Math.PI / 6;
  196. var x1 = center_x + radius * Math.cos(angle);
  197. var y1 = center_y - radius * Math.sin(angle);
  198. var next_i = (i + 1) % 3;
  199. var next_angle = -next_i * 120 * Math.PI / 180 + Math.PI / 6;
  200. var x2 = center_x + radius * Math.cos(next_angle);
  201. var y2 = center_y - radius * Math.sin(next_angle);
  202. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  203. // Рисование оставшихся линий снежинка
  204. for (let i = 0; i < 6; i++) {
  205. const center_x = centerX;
  206. const center_y = centerY + 268;
  207. const radius = 20;
  208. const rotationAngle = 30 * Math.PI / 180; // Поворот на 30 градусов
  209. const angle = -i * 60 * Math.PI / 180 + Math.PI / 6 + rotationAngle;
  210. const x1 = center_x + radius * Math.cos(angle);
  211. const y1 = center_y - radius * Math.sin(angle);
  212. const next_i = (i + 2) % 6;
  213. const next_angle = -next_i * 60 * Math.PI / 180 + Math.PI / 6 + rotationAngle;
  214. const x2 = center_x + radius * Math.cos(next_angle);
  215. const y2 = center_y - radius * Math.sin(next_angle);
  216. ctx.beginPath();ctx.moveTo(center_x, center_y);ctx.lineTo(x1, y1);ctx.stroke();ctx.closePath();
  217. ctx.beginPath();ctx.moveTo(center_x, center_y);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  218. // --- 7 --- Семиконечная звезда ----------------------------------------------------------------------------------------------------------------
  219. for (var i = 0; i < 7; i++) {
  220. var center_x = centerX - 144;
  221. var center_y = centerY + 233;
  222. var radius = 34;
  223. var angle = -i * (360 / 7) * Math.PI / 180 + Math.PI / 2;
  224. var x1 = center_x + radius * Math.cos(angle) + 10;
  225. var y1 = center_y - radius * Math.sin(angle) - 1;
  226. var next_i = (i + 3) % 7;
  227. var next_angle = -next_i * (360 / 7) * Math.PI / 180 + Math.PI / 2;
  228. var x2 = center_x + radius * Math.cos(next_angle) + 10;
  229. var y2 = center_y - radius * Math.sin(next_angle) - 1;
  230. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  231. // --- 8 --- Восьмиконечная звезда --------------------------------------------------------------------------------------------------------------
  232. // --- var rds34 --- глобальная переменная для всех радиусов 34 -------------------------------------------
  233. var rds34 = 34;
  234. // Рисование линии 8-й час (часть 1)
  235. for (var i = 0; i < 4; i++) {
  236. var angle = -i * 90 * Math.PI / 180 + Math.PI / 2;
  237. var center_x = centerX - 232;
  238. var center_y = centerY + 134;
  239. var x1 = center_x + rds34 * Math.cos(angle);
  240. var y1 = center_y - rds34 * Math.sin(angle);
  241. var next_i = (i + 1) % 4;
  242. var next_angle = -next_i * 90 * Math.PI / 180 + Math.PI / 2;
  243. var x2 = center_x + rds34 * Math.cos(next_angle);
  244. var y2 = center_y - rds34 * Math.sin(next_angle);
  245. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  246. // Рисование линии 8-й час (часть 2)
  247. for (var i = 0; i < 4; i++) {
  248. var angle = -i * 90 * Math.PI / 180 + Math.PI / 4;
  249. var radius = 34;
  250. var center_x = centerX - 232;
  251. var center_y = centerY + 134;
  252. var x1 = center_x + radius * Math.cos(angle);
  253. var y1 = center_y - radius * Math.sin(angle);
  254. var next_i = (i + 1) % 4;
  255. var next_angle = -next_i * 90 * Math.PI / 180 + Math.PI / 4;
  256. var x2 = center_x + radius * Math.cos(next_angle);
  257. var y2 = center_y - radius * Math.sin(next_angle);
  258. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  259. // --- 9 --- Девятиконечная звезда -------------------------------------------------------------------------------------------------------------
  260. for (var j = -1; j <= 1; j++) {
  261. for (var i = 0; i < 3; i++) {
  262. var angle = -i * 120 * Math.PI / 180 + Math.PI / 2 + 2 * Math.PI / 9 * j;
  263. var center_x = centerX - 269;
  264. var center_y = centerY;
  265. var x1 = center_x + 34 * Math.cos(angle);
  266. var y1 = center_y - 34 * Math.sin(angle);
  267. var next_i = (i + 1) % 3;
  268. var next_angle = -next_i * 120 * Math.PI / 180 + Math.PI / 2 + 2 * Math.PI / 9 * j;
  269. var x2 = center_x + 34 * Math.cos(next_angle);
  270. var y2 = center_y - 34 * Math.sin(next_angle);
  271. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();
  272. }
  273. }
  274. // --- 10 --- Деcятиконечная звезда -------------------------------------------------------------------------------------------------------------
  275. // Рисование линии 10-й час (часть 1)
  276. var cntrx10 = centerX - 232;
  277. var cntry10 = centerY - 134;
  278. for (var i = 0; i < 5; i++) {
  279. var angle = -i * 144 * Math.PI / 180 + Math.PI / 2;
  280. var x1 = cntrx10 + 34 * Math.cos(angle);
  281. var y1 = cntry10 - 34 * Math.sin(angle);
  282. var next_i = (i + 1) % 5;
  283. var next_angle = -next_i * 144 * Math.PI / 180 + Math.PI / 2;
  284. var x2 = cntrx10 + 34 * Math.cos(next_angle);
  285. var y2 = cntry10 - 34 * Math.sin(next_angle);
  286. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  287. // Рисование линии 10-й час (часть 2)
  288. for (var i = 0; i < 5; i++) {
  289. var angle = -i * 144 * Math.PI / 180 + Math.PI / 2;
  290. var x1 = cntrx10 + 34 * Math.cos(angle);
  291. var y1 = cntry10 + 34 * Math.sin(angle); // Изменение знака
  292. var next_i = (i + 1) % 5;
  293. var next_angle = -next_i * 144 * Math.PI / 180 + Math.PI / 2;
  294. var x2 = cntrx10 + 34 * Math.cos(next_angle);
  295. var y2 = cntry10 + 34 * Math.sin(next_angle); // Изменение знака
  296. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  297. // --- 11 --- Рисование линии 11-й час Одинадцатиконечная звезда -----------------------------------------------------------------------------
  298. for (var i = 0; i < 11; i++) {
  299. var angle_increment = 360 / 11;
  300. var center_x = centerX - 134;
  301. var center_y = centerY - 232;
  302. var angle = -i * angle_increment * Math.PI / 180 + Math.PI / 2;
  303. var x1 = center_x + 34 * Math.cos(angle);
  304. var y1 = center_y - 34 * Math.sin(angle);
  305. var next_i = (i + 4) % 11; // Смещение на 4 шага вперед для 11-конечной звезды
  306. var next_angle = -next_i * angle_increment * Math.PI / 180 + Math.PI / 2;
  307. var x2 = center_x + 34 * Math.cos(next_angle);
  308. var y2 = center_y - 34 * Math.sin(next_angle);
  309. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  310. // --- 12 --- Рисование линии 12-й час ------------------------------------------------------------------------------------------------------
  311. for (var i = 0; i < 12; i++) {
  312. const center_x = centerX;
  313. const center_y = centerY - 268;
  314. const radius = 34;
  315. var angle = -i * 30 * Math.PI / 180 + Math.PI / 2 + 2 * Math.PI / 24;
  316. var x1 = center_x + radius * Math.cos(angle);
  317. var y1 = center_y - radius * Math.sin(angle);
  318. var next_i = (i + 1) % 12;
  319. var next_angle = -next_i * 30 * Math.PI / 180 + Math.PI / 2 + 2 * Math.PI / 24;
  320. var x2 = center_x + radius * Math.cos(next_angle);
  321. var y2 = center_y - radius * Math.sin(next_angle);
  322. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  323. // Уголки квадрато-треугольников
  324. a1=center_x + 143
  325. a2=center_x + 143
  326. a3=center_x + 159
  327. b1=center_y - 70
  328. b2=center_y - 51
  329. b3=center_y - 60
  330. ctx.beginPath();ctx.moveTo(a1,b1);ctx.lineTo(a2,b2);ctx.lineTo(a3,b3);ctx.stroke();ctx.closePath();
  331. //
  332. c1=center_x + 167
  333. c2=center_x + 151
  334. c3=center_x + 167
  335. d1=center_y - 46
  336. d2=center_y - 36
  337. d3=center_y - 28
  338. ctx.beginPath();ctx.moveTo(c1,d1);ctx.lineTo(c2,d2);ctx.lineTo(c3,d3);ctx.stroke();ctx.closePath();
  339. //
  340. e1=center_x + 159
  341. e2=center_x + 143
  342. e3=center_x + 143
  343. f1=center_y - 13
  344. f2=center_y - 22
  345. f3=center_y
  346. ctx.beginPath();ctx.moveTo(e1,f1);ctx.lineTo(e2,f2);ctx.lineTo(e3,f3);ctx.stroke();ctx.closePath();
  347. //
  348. g1=center_x + 110
  349. g2=center_x + 126
  350. g3=center_x + 126
  351. h1=center_y - 13
  352. h2=center_y - 21
  353. h3=center_y
  354. ctx.beginPath();ctx.moveTo(g1,h1);ctx.lineTo(g2,h2);ctx.lineTo(g3,h3);ctx.stroke();ctx.closePath();
  355. //
  356. i1=center_x + 102
  357. i2=center_x + 116
  358. i3=center_x + 102
  359. j1=center_y - 46
  360. j2=center_y - 36
  361. j3=center_y - 28
  362. ctx.beginPath();ctx.moveTo(i1,j1);ctx.lineTo(i2,j2);ctx.lineTo(i3,j3);ctx.stroke();ctx.closePath();
  363. //
  364. k1=center_x + 126
  365. k2=center_x + 126
  366. k3=center_x + 110
  367. l1=center_y - 70
  368. l2=center_y - 51
  369. l3=center_y - 60
  370. ctx.beginPath();ctx.moveTo(k1,l1);ctx.lineTo(k2,l2);ctx.lineTo(k3,l3);ctx.stroke();ctx.closePath();
  371. // поворот 6-угольной конструкции на 30 градусов
  372. const rotationAngle = 30 * Math.PI / 180;
  373. for (let i = 0; i < 6; i++) {
  374. const center_x = centerX;
  375. const center_y = centerY - 268;
  376. const radius = 18;
  377. const angle = -i * 60 * Math.PI / 180 + Math.PI / 6 + rotationAngle;
  378. const x1 = center_x + radius * Math.cos(angle);
  379. const y1 = center_y - radius * Math.sin(angle);
  380. const next_i = (i + 1) % 6;
  381. const next_angle = -next_i * 60 * Math.PI / 180 + Math.PI / 6 + rotationAngle;
  382. const x2 = center_x + radius * Math.cos(next_angle);
  383. const y2 = center_y - radius * Math.sin(next_angle);
  384. ctx.beginPath();ctx.moveTo(x1, y1);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  385. // Рисование оставшихся линий снежинка
  386. for (let i = 0; i < 6; i++) {
  387. const center_x = centerX;
  388. const center_y = centerY - 268;
  389. const radius = 18;
  390. const angle = -i * 60 * Math.PI / 180 + Math.PI / 6 + rotationAngle;
  391. const x1 = center_x + radius * Math.cos(angle);
  392. const y1 = center_y - radius * Math.sin(angle);
  393. const next_i = (i + 2) % 6;
  394. const next_angle = -next_i * 60 * Math.PI / 180 + Math.PI / 6 + rotationAngle;
  395. const x2 = center_x + radius * Math.cos(next_angle);
  396. const y2 = center_y - radius * Math.sin(next_angle);
  397. ctx.beginPath();ctx.moveTo(center_x, center_y);ctx.lineTo(x1, y1);ctx.stroke();ctx.closePath();
  398. ctx.beginPath();ctx.moveTo(center_x, center_y);ctx.lineTo(x2, y2);ctx.stroke();ctx.closePath();}
  399. // --------------------
  400. }
  401. // ------------ Скрипт канваса с часами ----------------------------------------------------------
  402. function load()
  403. {
  404. var canvas=document.getElementById("alarm"); // Получаем DOM-объект нашего "холста"
  405. var ctx=canvas.getContext("2d"); //Берём его контекст (с его помощью и будем рисовать)
  406. var width=canvas.width,height=canvas.height; //Размеры "холста"
  407. ctx.shadowColor = "Coral";
  408. ctx.shadowOffsetX = 5;
  409. ctx.shadowOffsetY = 5;
  410. ctx.shadowBlur = 5;
  411. ctx.fillStyle = "Teal";
  412. ctx.strokeStyle = "DarkCyan";
  413. var position_s=0,position_m=0,position_h=0; //Получаем значения в радианах, соответствующие градусам,
  414. //на которые повернётся соответствующая стрелка часов за секунду
  415. var sec=6*Math.PI/180,
  416. min =1/ 10*Math.PI/180,
  417. hour=1/120*Math.PI/180;
  418. //И текущее положение стрелок на часах
  419. //С переводом из секунд в соответствующие единицы времени
  420. position_s=new Date().getSeconds()*sec;
  421. position_m=new Date().getMinutes()*60*min;
  422. position_h=new Date().getHours()*3600*hour+new Date().getMinutes()*60*hour;
  423. function alarm()//функция перерисовки Canvas'а вызывается каждую секунду
  424. {
  425. function line(pos,r,w)
  426. { //функция рисования линии
  427. ctx.lineWidth=w||1; //первый аргумент - градус поворота стрелки
  428. ctx.beginPath();
  429. ctx.moveTo(width/2,height/2); //center conusa
  430. ctx.lineTo(width/2+r*Math.cos(pos-Math.PI/2), //2 ploscost conusa,
  431. height/2+r*Math.sin(pos-Math.PI/2));//2 ploscost conusa,
  432. ctx.stroke();
  433. ctx.closePath();
  434. }
  435. position_s+=sec;
  436. position_m+=min;
  437. position_h+=hour;
  438. ctx.clearRect (0, 0, width, height); //Функция очистки Canvas
  439. line(position_h,233,8);//Рисование стрелок часов
  440. line(position_m,208,3);//Рисование стрелок часов
  441. line(position_s,208,1);//Рисование стрелок часов
  442. }
  443. setInterval(alarm,1000); //Создание таймера, вызывающего всю перерисовку
  444. }
  445. </script>
  446. </head>
  447. <!--body onload="signs(); load(); BckCrc();"-->
  448. <body onload="signs(); load();">
  449. <!-------------------------------------------------->
  450. <canvas width="616" height="616" id="signs"></canvas>
  451. <canvas width="616" height="616" id="alarm"></canvas>
  452. <!-------------------------------------------------->
  453. </body>
  454. </html>