Редактирование: КП: Прицельный бильярд
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 68: | Строка 68: | ||
var T0 = 1; // масштаб времени (период колебаний исходной системы) | var T0 = 1; // масштаб времени (период колебаний исходной системы) | ||
var a0 = 1; // масштаб расстояния (диаметр шара) | var a0 = 1; // масштаб расстояния (диаметр шара) | ||
− | var q = 90; // угол | + | var q = -90; // угол |
Строка 153: | Строка 153: | ||
} | } | ||
− | for (var i = 0; i < balls.length; i++) { | + | for (var i = 0; i < balls.length; i++) { |
//попадание в лузу | //попадание в лузу | ||
− | if ((balls[i].x >= (300/scale-r | + | if ((balls[i].x >= (300/scale-r)) && (balls[i].y >= (300/scale-r)) && (balls[i].y <= (300/scale+r))) {balls.splice(i, 1)}; |
− | if ((balls[i].x >= (300/scale-r | + | if ((balls[i].x >= (300/scale-r)) && (balls[i].y <= (r))) {balls.splice(i, 1)}; |
− | if ((balls[i].x >= (300/scale-r | + | if ((balls[i].x >= (300/scale-r)) && (balls[i].y >= (600/scale -r))) {balls.splice(i, 1)}; |
− | if ((balls[i].x <= (r | + | if ((balls[i].x <= (r)) && (balls[i].y >= (600/scale -r))) {balls.splice(i, 1)}; |
− | if ((balls[i].x <= (r | + | if ((balls[i].x <= (r)) && (balls[i].y >= (300/scale-r)) && (balls[i].y <= (300/scale+r))) {balls.splice(i, 1)}; |
− | if ((balls[i].x <= (r | + | if ((balls[i].x <= (r)) && (balls[i].y <= (r))) {balls.splice(i, 1)}; |
// расчет взаимодействия производится со всеми следующими шарами в массиве, | // расчет взаимодействия производится со всеми следующими шарами в массиве, | ||
Строка 195: | Строка 195: | ||
} | } | ||
− | if (b.y + r > h) { b.fy += -Cwall * (b.y + r - h) - Bwall * b.vy; } | + | if (b.y + r > h) { b.fy += -Cwall * (b.y + r - h) - Bwall * b.vy; } |
if (b.y - r < 0) { b.fy += -Cwall * (b.y - r) - Bwall * b.vy;} | if (b.y - r < 0) { b.fy += -Cwall * (b.y - r) - Bwall * b.vy;} | ||
if (b.x + r > w) { b.fx += -Cwall * (b.x + r - w) - Bwall * b.vx; } | if (b.x + r > w) { b.fx += -Cwall * (b.x + r - w) - Bwall * b.vx; } | ||
Строка 211: | Строка 211: | ||
var rScaleShift = r * scale / 5; // ___в целях оптимизации___ | var rScaleShift = r * scale / 5; // ___в целях оптимизации___ | ||
var line ; | var line ; | ||
− | var radi = 30; | + | var radi = 30; |
+ | var radi2 = 5; | ||
function draw() { | function draw() { | ||
context.clearRect(0, 0, w * scale, h * scale); // очистить экран | context.clearRect(0, 0, w * scale, h * scale); // очистить экран | ||
− | for (var i = | + | for (var i = 0; i < balls.length; i++){ |
var xS = balls[i].x * scale; var yS = balls[i].y * scale; | var xS = balls[i].x * scale; var yS = balls[i].y * scale; | ||
// расчет градиента нужно проводить для каждого шара | // расчет градиента нужно проводить для каждого шара | ||
Строка 228: | Строка 229: | ||
context.fill(); | context.fill(); | ||
} | } | ||
− | for (var i = | + | for (var i = 15; i < balls.length; i++){ |
var xS = balls[i].x * scale; var yS = balls[i].y * scale; | var xS = balls[i].x * scale; var yS = balls[i].y * scale; | ||
// расчет градиента нужно проводить для каждого шара | // расчет градиента нужно проводить для каждого шара | ||
Строка 247: | Строка 248: | ||
context.strokeStyle="#fff506"; | context.strokeStyle="#fff506"; | ||
context.beginPath(); | context.beginPath(); | ||
− | context.moveTo(balls[ | + | context.moveTo(balls[15].x * scale, balls[15].y * scale); |
− | context.lineTo(radi*v0*Math.cos(q*Pi/180) + balls[ | + | context.lineTo(radi*v0*Math.cos(q*Pi/180) + balls[15].x * scale,radi*v0*Math.sin(q*Pi/180)+balls[15].y * scale); |
context.stroke(); | context.stroke(); | ||
− | |||
// verh lev | // verh lev | ||
context.lineWidth="3"; | context.lineWidth="3"; | ||
Строка 336: | Строка 336: | ||
// Запуск системы | // Запуск системы | ||
− | |||
− | |||
addNewBall(16*w/32, 8*h/32 ); | addNewBall(16*w/32, 8*h/32 ); | ||
addNewBall(16*w/32 - r, 8*h/32 - 1.7321*r); | addNewBall(16*w/32 - r, 8*h/32 - 1.7321*r); | ||
Строка 355: | Строка 353: | ||
addNewBall(16*w/32, 16*h/32 ); | addNewBall(16*w/32, 16*h/32 ); | ||
− | this.setSlider_01 = function(c) { q= | + | this.setSlider_01 = function(c) { q=c ;}; // функция для слайдера угла |
this.setSlider_02 = function(c) { v0=c ;}; // функция для слайдера угла | this.setSlider_02 = function(c) { v0=c ;}; // функция для слайдера угла | ||
// Настройка интерфейса | // Настройка интерфейса | ||
− | slider_01.min = | + | slider_01.min = -360; slider_01.max =180; |
− | slider_01.step = 0. | + | slider_01.step = 0.1; |
slider_01.value = q; // начальное значение ползунка должно задаваться после min и max | slider_01.value = q; // начальное значение ползунка должно задаваться после min и max | ||
− | text_01.value = | + | text_01.value = -q; |
slider_02.min = 0; slider_02.max = 10; | slider_02.min = 0; slider_02.max = 10; | ||
slider_02.step = 0.5; | slider_02.step = 0.5; | ||
Строка 373: | Строка 371: | ||
this.newSystem = function() { | this.newSystem = function() { | ||
− | balls[ | + | balls[15].vx = v0* Math.cos(q*Pi/180); |
− | balls[ | + | balls[15].vy = v0* Math.sin(q*Pi/180); |
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
setInterval(control, 1000 / fps); | setInterval(control, 1000 / fps); | ||
} | } | ||
− | |||
− | |||
Строка 457: | Строка 431: | ||
[[Файл:WHVJA1.png|thumb|рис.1.Траектория разлета шаров при центральном разбиении пирамиды.|слева|250px]] | [[Файл:WHVJA1.png|thumb|рис.1.Траектория разлета шаров при центральном разбиении пирамиды.|слева|250px]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||