![]() |
Как можно сделать так, чтобы радиус зависел от расстояния?
Здравствуйте.
Как можно сделать так, чтобы радиус окружности (объект A) зависел от расстояние между объектом A и B и при этом радиус не должен превышать 200 пикселей? |
Прежде нужно измерить само расстояние между А и В и если оно больше if(радиус>200)radius=200;else radius=radius... Вообще вопрос не понятный немного.. Может есть ещё что-то, из-а чего у Вас не получается?) И как он должен зависеть?
|
Давайте я лучше напишу, что я хочу сделать.
Я хочу сделать так, чтобы определённое количество звёзд, которые вращаются вокруг точки A, постепенно суживались (приближались к друг другу; радиус уменьшался), достигая точки B. Когда расстояние между двумя точками уже равно 0, то радиус тоже должен быть равен нулю, и в итоге получится, что видно только одну звезду. |
Тогда Вам нужно дистанцию от А до В выразить в качестве процентной шкалы, где полное первоначальное расстояние ровнялось 200 пикселям. И получается, чем больше Вы сближаете объекты, тем больше проходите процентов и тем больше становится значение вычитаемое из значения радиуса. я не умею объяснять:)
|
Код AS3:
|
Dip52 получилось у Вас?
|
С процентами не разобрался.
С Math.min, можно сказать тоже, так как ставлю 200 (300,400,3000, и т.д.), и радиус всё равно маленький. |
Тогда чтобы понять до конца, задам ещё вопрос - у Вас есть точка, во круг её орбиты вращаются звезды. Так же есть точка В. Когда точка А сближается с точкой В до дистанции между ними равной 200, то в этот момент звезды во круг точки А начинают уменьшать свой радиус ( орбиту ) ? Правильно я понял?
|
Вложений: 1
Почти.
В начале, когда звёзды только появились, они находятся на расстояние от точки A на 200 пикселей. То есть, получается, что они имеют радиус 200 пикселей. Когда точка А приближается к точке B, то радиус должен уменьшаться, в зависимости от приближения точки А к точке B (чем ближе, тем радиус меньше, тем звезды ближе к точке A). Это я сделал по алгоритму, который мне подсказали: (20 * Point.distance(new Point(STAR.x,STAR.y),points))/10; Но этот код мне не понятен, поэтому решил узнать конкретно. |
А кол-во штучек, которые вращаются на орбите должно оставаться столькоже или уменьшатся в зависимости от размера окружности?
|
Вложений: 1
|
Извините, я ошибся. То, что я хочу сделать — оно никак невыразимо.
Как можно узнать сколько нужно отнимать пикселей от радиуса, чтобы при приближение точки A к точке B радиус был равен нулю? Если я имею такие условия: Радиус: 200 пикселей. R — расстояние, на которое звёзды отходят от точки A. Скорость: 10 пикселей. S — скорость, с которой двигается точка A к точке B. Расстояние: 1000 пикселей. D — расстояние от точки A до точки B. Вопрос, изначально, был таким. Просто я немного не туда ушёл и напридумывал не то, отсюда и недопонимание. |
Это я если честно не то наверное показал, сам говорил о процентах, а сделал вообще другое.
Вам нужно ( если не прав то поправьте ( просто я опять читаю ваши слова и мне кажется, что нужны проценты ) ) - у Вас точка А находится центром в (300,300) и радиус у неё 200. Точка В находится (800,300) и расстояние между АВ=500. И вот Вам нужно равномерно уменьшить радиус с 200 до 0, по мере приближения А к В? Так? То есть, расстояние может между точками быть разное, но оно всегда учитывается при расчете радиуса? Так? |
Да, в любом случае. Вообще, так: если расстояние 100 пикселей, скорость 10 пикселей, а радиус 200 пикселей, то, по идее, если я поделю 200 на 10 и получу 20, то 20 есть то, что нужно отнимать (от радиуса) каждый раз, когда точка приближается к другой точке. Кажется, я ответил на свой вопрос.
|
Нет, по Вашей логике, если расстояние будет 1000 и Вы разделите на 10 то будет 100, которые Вы каждый пиксель будете отнимать от радиуса.
Добавлено через 23 минуты я сейчас покажу, как я бы сделал, в минимальном примере. |
Вложений: 1
|
Да, именно так.
|
Код AS3:
|
CIRCLE_RADIUS - CIRCLE_RADIUS/100*ratio*100
А что за 100? |
CIRCLE_RADIUS - это константа минимального радиуса,
- CIRCLE_RADIUS из которой мы хотим отнять немножечко, поэтому /100 делим её (200) на сто, переводим в проценты, 1% = 2 *ratio свойство соотношения которое в данном случаи может быть от 0 до 1, мы рассматриваем как процентную шкалу, но так как она от нуля до одного, а нам нужно же сто процентов, по этому *100 мы её умножаем на сто. |
| Часовой пояс GMT +4, время: 06:45. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.