Hypotrochoid

Много чего полезного принес мне конкурс JS1k. Вот и сегодня разбирая одну из работ я приготовил материал для статьи.

На самом деле стоило бы дать линк на эту работу но я его не знаю. То есть как, автор приготовил это для конкурса, но линк на работу не дал.

В общем по результатам разбора примера, найден проеб. При попытке оптимизировать отрисовку, оптимизация не случилась :)

То есть автор сделал как-то так


setInterval(function(){
	while(25--){
		c.beginPath();
		x = ...
		y = ...
		if(a){
			c.moveTo(a, b);
			c.lineTo(x, y);
		}
		a = x
		b = y
		c.stroke()
	}
}, 16); 

пытаясь запихнуть в один интервал отрисовку нескольких линий, а надо было выкинуть beginPath и stroke за цикл


setInterval(function(){
	c.beginPath();
	while(25--){
		x = ...
		y = ...
		с[!!a?"lineTo":"moveTo"](x, y);
		a = x
		b = y
	}
	c.stroke()
}, 16)

Но я не об этом. Я тут приготовил пример на поиграться :)



Радиус, это дробное число до 0,5. Почему до 0,5? Потому что 0,2 = 0,8 и 0,4 = 0,6. Ну вы поняли они зеркальные. Чтобы звездочка начала крутиться советую добавить 0,005. Наслаждайтесь :)

9 Комментарии “Hypotrochoid

  1. Прикольно.
    Вот эта строчка жесть для чайника в JS

    
    с[!!a?"lineTo":"moveTo"](x, y);
    

    Зачем двойное отрицание?

  2. @Sergey
    легкое гугление спасает
    «use «double negation» instead of «if» statement to convert any value to boolean:
    var bool = !!someVar;»

  3. deerua :
    @Sergey

    легкое гугление спасает
    «use «double negation» instead of «if» statement to convert any value to boolean:
    var bool = !!someVar;»

    Легким гуглением можно заменить 99,9 процентов комментов. Ну и разговоров тоже. Ну и так в тему:) http://bash.org.ru/quote/408308
    Понятно мог загуглить, но тогда не было бы повода продолжить диалог:)

  4. Мог даже не гулить. А просто спросить в слух. Правда наверное тоже послали бы Загулить:)

  5. ну да после того как появился гугл и википедия мне с людьми вообще не о чем стало разговаривать…

  6. 0.5 — линия
    0.4 — звезда
    0.3 — 10 углов (через центр)
    0.25 — квадрат
    0.2 — пятиугольник
    0.1 — 10 углов (по кругу)
    0.X8 — стабильные фигуры
    0.X5 — стабильные фигуры
    0.X4 — стабильные фигуры
    0.X2 — стабильные фигуры

Комментарии закрыты