Неправильный размер радиуса окружности

#javascript #canvas #geometry

Вопрос:

мой сценарий не работает. Предполагалось, что он будет создавать случайные круги, все они будут касаться нижней части холста, причем их радиус будет уменьшаться с каждым кругом на количество кругов.

Вот код:

 for (var i = 0; i < NUM_CIRCLES; i  ){
   var circle = new Circle(radius);
   circle.setPosition(CENTER_X,CENTER_Y);
   circle.setColor(color);
   add(circle);
    
   radius /= i;
   CENTER_Y = getHeight() - radius;
   color = Randomizer.nextColor();
}
 

Комментарии:

1. показать полный запускаемый код

Ответ №1:

Хорошо, вот полный код:

 var NUM_CIRCLES = 30;
var BIG_RADIUS = 180;
var color = Randomizer.nextColor();
var radius = BIG_RADIUS;
var CENTER_X = getWidth() / 2;
var CENTER_Y = getHeight() - radius;

function start(){
    for (var i = 0; i < NUM_CIRCLES; i  ){
        var circle = new Circle(radius);
        circle.setPosition(CENTER_X,CENTER_Y);
        circle.setColor(color);
        add(circle);
    
        radius /= i;
        CENTER_Y = getHeight() - radius;
        color = Randomizer.nextColor();
    }
}
 

Комментарии:

1. Извините, но это не полный код… и вы должны добавить это к вопросу, а не в качестве ответа … какой библиотекой вы пользуетесь?

Ответ №2:

насколько я понимаю, вы пытаетесь создавать круги от большего к меньшему, уменьшая их радиус на количество кругов

чтобы достичь этого, сделайте eachReduce = radius / numberofcircles и используйте его в качестве константы eachReduce, чтобы уменьшить каждый круг на это число, чтобы получить больший или меньший размер до нуля, посмотрите на приведенный ниже пример

 let numofcir = 10,
    radius = 80,
    reduceEachBy = radius / numofcir,
    offset = radius / 2

function setup() {
  createCanvas(640, 360);
  noLoop()
}

function draw() {
  background(0)
  stroke(255)
  noFill()

  for(let i=0;i < numofcir;i  ){
    // in p5 ellipse creates circle by x and y radius
    ellipse(offset   (i * offset),150,radius,radius)
    radius -= reduceEachBy
  }
} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.min.js" integrity="sha512-N4kV7GkNv7QR7RX9YF/olywyIgIwNvfEe2nZtfyj73HdjCUkAfOBDbcuJ/cTaN04JKRnw1YG1wnUyNKMsNgg3g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> 

Комментарии:

1. Хорошо, дай мне одну секунду

2. var NUM_CIRCLES = 30; var BIG_RADIUS = 180; var color = Рандомизатор.nextColor(); var radius = BIG_RADIUS; var CENTER_X = getWidth() / 2; var CENTER_Y = getHeight() — радиус; функция start(){ для (var i = 0; i

3. Почему это не сработало?

4. запускаемый код не поддерживается только в поле для вопросов или ответов, не работает в комментариях

5. смотрите обновленные ответы