Кажется, работать с $(".bgimages:nth-of-type(" + i + ")")
и fadeOut()
- хотя ваше использование i--
позволило бы пропустить четвертый (исправлено в моем коде ниже)
(function intro (i) {
setTimeout(function() {
if(i) {
$(".bgimages:nth-of-type(" + i + ")").fadeOut();
intro(--i);
}
}, 3000);
})(4);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bgimages">A</div>
<div class="bgimages">B</div>
<div class="bgimages">C</div>
<div class="bgimages">D</div>
Я считаю, что есть несколько проблем с вашим кодом. Вероятно, наиболее важным является логика линии:
let y = min p1.X p2.X + dy * (x - min p1.X p2.X) / dx
Очевидно, это должно было быть что-то вроде
y = y0 + (x-x0)*dy/dx
, т.е. первый термин должен быть чем-то вроде Y
, а не X
. К сожалению, с вашей логикой зацикливания это должно быть Y
точки, которая имеет меньшее значение X
. Это не так просто сказать. ИМХО, проще исправить цикл, используя отрицательный шаг.
Другое наивное предположение состоит в том, что вы всегда можете нарисовать линию, имеющую y
для каждого x
. Это явно не так, когда dy > dx
. Более того, в случае вертикальной линии, когда dx
равно 0
, код не будет выполнен. Самый популярный алгоритм строк Брезенхэма требует, чтобы вы обрабатывали эти случаи как явно отличающиеся. Вот простая реализация, которая обрабатывает эти случаи:
let drawLine p1 p2 =
let dx = p2.X - p1.X
let dy = p2.Y - p1.Y
if((dx <> 0) || (dy <> 0)) then
if abs(dx) >= abs(dy) then
let step = if (p1.X < p2.X) then 1 else -1
for x in p1.X ..step.. p2.X do
let y = p1.Y + dy * (x - p1.X) / dx
Console.SetCursorPosition(x, y)
printf "."
else
let step = if (p1.Y < p2.Y) then 1 else -1
for y in p1.Y .. step .. p2.Y do
let x = p1.X + dx * (y - p1.Y) / dy
Console.SetCursorPosition(x, y)
printf "."
Что касается других проблем, вы, вероятно, захотите ограничить позиции ваших точек некоторой видимой областью между 0 и некоторым максимальным значением. SetCursorPosition
вызов с отрицательным значением или значением, превышающим размер буфера, приведет к сбою вашего приложения.